About
A text input that formats as you type using a pattern mask (digits, letters, or either), such as a card number, phone number, or date, while also handing back the raw unformatted characters for submission.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Mask Input to your project and fits it to your theme.
Code
How Mask Input is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
"use client";
import { MaskInput } from "@/components/ui/mask-input";
import { useState } from "react";
export default function MaskInputDemo() {
const [raw, setRaw] = useState("");
return (
<div className="flex w-full max-w-xs flex-col gap-2 bg-background text-foreground">
<label
className="text-sm font-medium text-muted-foreground"
htmlFor="card-number"
>
Card number
</label>
<MaskInput
id="card-number"
mask="#### #### #### ####"
onValueChange={(_, value) => setRaw(value)}
/>
<p className="text-xs text-muted-foreground">
Raw digits sent to the API: {raw || "—"}
</p>
</div>
);
}
















