Skip to content

Kaufmann Commerce UI · v0.1

Commerce, with composure.

One semi-headless system for the whole commercial surface — storefront, cart, account, operator. React Aria primitives and headless hooks underneath; restrained Kaufmann surfaces on top; Astro-first, so most of it ships no JavaScript at all.

Everything below is a projection. Nothing here reserves stock, takes payment, accepts an Order or signs anyone in — and the components are built so they cannot quietly start to.

Palette

Five seeds. Everything else derives, and no component below :root may name a colour.

  • Paper--k-seed-paper
  • Ink--k-seed-ink
  • Clay--k-seed-clay
  • Spruce--k-seed-spruce
  • Gold--k-seed-gold
  • Sage
  • Clay
  • Ink
  • Announce
  • Practice
Change a seed, watch the system follow →

Type

Objects for slower seasons.

Interface copy, descriptions, controls — Outfit, kept quiet.

EULENWALD EDITION · 6 MIN READ

Serif for titles and prices at rest. Sans for interface. Mono smallcaps for metadata. Never a fourth family.

Primitives

NewOnly a few left

Six button variants × four sizes, all styling both RAC data-attributes and plain pseudo-classes — so static HTML can reuse the same classes.

The shop

Stand in the whole room →

Posture, not status

A resolved value says how it is known. Four steps, drawn as a gradient rather than four pass-fail colours — because a green tick beside a candidate is a lie told in CSS.

  • Gezähltverified
  • Beobachtetwatching
  • Geschätztestimated
  • Kandidatcandidate
Bestellungen
BelegEingegangenKundschaftBetragHaltung
2026-018412.10.2026M. Brandt36,00 €Gezählt
2026-018311.10.2026Papeterie Lind128,00 €Beobachtet
2026-018109.10.2026J. Vollmer24,00 €Geschätzt

Ungeklärt

  • 2026-0183 Zahlung avisiert, noch keine Bankzeile zugeordnet.
  • 2026-0181 Versandkosten geschätzt — Zone noch nicht bestätigt.
See the operator's cockpit →

Six families, one shape

Each is one headless hook, N interchangeable surfaces, shared sub-views, one docs route. Swapping a surface is a one-line page change.

What it costs

T0
Pure document. Offer grids, editorial, docs prose. 0 KB JS.
T1
Document + seam scripts. The storefront filter is ~1 KB.
T2
Islands. The storefront runs three.
T3/T4
Server islands and realtime — designed, not enabled.

Every page declares its tier. Going up one is a decision, not an accident.

What it refuses

  • To copy a price into content — references only, resolved at render.
  • To show a count it did not derive from membership.
  • To let a candidate style itself as a fact.
  • To invent a photo, an order history, or a session.
  • To clip a focus ring, or lose focus to <body>.