In a heading
The caller owns the typography; InlineEdit inherits itAsync commit
A promise-returning onCommit shows a pending spinner until it settles (800ms fake save)Rejected commit keeps the draft
Values that don't start with CAT- are rejected; the input stays open so nothing is lostDisabled
Reads as plain text: no pencil, no edit swapStyling slots
Every className the component exposes, and what it reaches- className
- the read/edit container, both states
- inputClassName
- the edit-mode input