An interactive input field with error shake animations and stroke check confirmation.
Installation
Usage
import { Input } from "viora-ui";
import { Mail } from "lucide-react";
import { useState } from "react";
export default function Demo() {
const [value, setValue] = useState("");
return (
<Input
label="Email"
type="email"
placeholder="you@example.com"
value={value}
onChange={setValue}
leftIcon={<Mail />}
success={value.includes("@")}
/>
);
}Built by Otis
Last updated: 9/13/2026