Kaufmann Commerce UI / Account family
Auth & Account
Sign-in, sign-up and an account shell — composition and field semantics only. These surfaces authenticate nobody, and are built so they cannot start to.
What these are not
There is no endpoint, no fetch, no storage and no session. The forms carry no action, submission is prevented, and the fields are cleared the moment the form is "submitted" so nothing typed outlives the interaction. The password input sets autocomplete="off" — a password manager should not be invited to save a credential for a form that signs nobody in.
Validation is deliberately shallow: the browser's own required and type checks, surfaced through React Aria's FieldError. That is form UX. It is not identity, and it never becomes identity without a real backend and a real security review.
Sign in
Email, password, a remember toggle. Submitting shows what the next screen would say — and says plainly that nothing happened.
Welcome back
Sign in to see your orders and saved things.
Sign up
The same surface with a name field and different words. One component, two modes — not two components.
Make an account
So the book remembers you, and your orders find their way back.
Account shell
Where a record would live. The name is fixture text, the orders are illustrative shapes, and the notice says so before anything that could be mistaken for a ledger.
Your account
Nobody is signed in. This shell shows where an account would live — the name below is fixture text, not an identity, and the orders are illustrative, not a record.
Details
- Name
- A. Kaufmann
- you@example.com
Orders
- Order 2026-0184Confirmed
- Order 2026-0171Candidate
Posture, not status
The illustrative orders carry a posture rather than a status: one reads Confirmed, one reads Candidate. That distinction comes from the founding engines document and matters more than it looks — a projection may show that something is not yet settled, but it may never present a candidate as a fact.
---
import { AuthForm, AccountShell } from "@kaufmann/ui";
---
<AuthForm client:load mode="sign-in" alternateHref="/account/sign-up/" />
<AuthForm client:load mode="sign-up" alternateHref="/account/sign-in/" />
<AccountShell account={account} />