Skip to content

Masked Input

A template-formatted input component for Ink 5. Handles IP addresses, dates, phone numbers, and custom mask patterns.

Install

Terminal window
npm install @matthesketh/ink-masked-input

Usage

import { MaskedInput, MASKS } from '@matthesketh/ink-masked-input';
function IpInput() {
const [value, setValue] = useState('');
return (
<MaskedInput
mask={MASKS.ip}
value={value}
onChange={setValue}
onSubmit={(v) => console.log('IP:', v)}
/>
);
}

Mask characters

CharacterMatches
9Any digit (0-9)
aAny letter (a-z, A-Z)
*Any character
OtherLiteral (rendered as-is, cursor skips over)

Presets

NameMask
ip999.999.999.999
date99/99/9999
time99:99
phone+99 (999) 999-9999
mac**:**:**:**:**:**

Props

PropTypeDefaultDescription
maskstringMask pattern
valuestringCurrent raw value (editable chars only)
onChange(value: string) => voidCalled when value changes
onSubmit(value: string) => voidCalled on Enter when all positions filled
placeholderstringmaskPlaceholder display
focusbooleantrueWhether input is active

License

MIT