InputShell
The "looks like a text input" chrome, generic over its content.
Bordered input-style container that accepts anything inside — a chip (selected record), a bare native input (free-text), an icon + label, a date display. Pairs with EntityChip for picker triggers and with a native <input> for free-text fields without depending on our Radix-based Input primitive.
Install
Pull from the workspace packages (already available if you ran pnpm add):
Examples
With EntityChip (interactive — opens picker)
With native <input>
States
Select product…
Field is required
Disabled
Variants
interactive
falsedefaultPassive chrome — for free-text inputs.trueClick-target — hover bg + pointer cursor. Opens a picker.state
defaultdefaultStandard bordered container.invalidRed border + matching focus ring.disabledDimmed + not-allowed cursor.Guidelines
✓
Use it as the wrapper inside LineItemCard headers for both chip and free-text cases.Two-mode header reads as one consistent input affordance across the row list.
✕
Reach for it when our root <Input> is enough.For plain Normal-DOM forms, Input + Field is the canonical pair. InputShell is for Remote-DOM-compatible inline content or non-input children.