Eulenwald edition
Seasonal Circle Cards
Twelve illustrated prompts for noticing the year as it changes.
Kaufmann Commerce UI / Transaction family
Pluggable cart surfaces — a compact popover, a full-height drawer, and the inline panel — over one headless projection (useStorefrontCart). Swappable without changing page wiring.
The compact default: drops down at the cart control instead of covering the page. Add an Offer, or open it from its own trigger button.
Eulenwald edition
Twelve illustrated prompts for noticing the year as it changes.
Brief & Geschichte
A letter, a fold-out illustration and a small seasonal practice.
Digital reader
Five quiet chapters about attention, place and returning.
useStorefrontCart owns the projected quantities and the frontend event seam: it consumes data-add-offer clicks and kaufmann:cart-open, and broadcasts kaufmann:cart-updated. CartPopover, CartDrawer and the inline CartPanel are interchangeable views over that state. CartLines is the shared line-item list they compose.
None of these surfaces claims a reservation, inventory mutation, tax calculation, payment session or accepted backend Order.
---
import { CartDrawer, CartPopover } from "@kaufmann/ui";
---
<!-- pick ONE cart surface per page; both share the same events -->
<CartDrawer client:load offers={offers} />
<CartPopover client:load offers={offers} anchor=".k-cart-trigger" />The drawer (historically StorefrontCart, now an alias of CartDrawer) remains available for compositions where the cart should command the page edge. It answers the same events, so switching surfaces is a one-line change.