Command Palette

Search for a command to run...

Input

Displays a form input field or a component that looks like an input field.

Installation

Follow these simple steps to add the Input component to your project:

Install Dependencies

pnpm add motion

Create a new file components/ui/input.tsx and copy the code below:

"use client";
import * as React from "react";
import { cn } from "@/lib/utils";
 
const Input = React.forwardRef<HTMLInputElement, React.ComponentProps<"input">>(
    ({ className, type, ...props }, ref) => {
        return (
            <input
                type={type}
                className={cn(
                    "border-input bg-background text-foreground placeholder:text-muted-foreground/70 focus-visible:border-ring focus-visible:ring-ring/20 flex h-9 w-full rounded-lg border px-3 py-2 text-sm shadow-sm shadow-black/5 transition-shadow focus-visible:ring-[3px] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
                    type === "search" &&
                        "[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none [&::-webkit-search-results-button]:appearance-none [&::-webkit-search-results-decoration]:appearance-none",
                    type === "file" &&
                        "text-muted-foreground/70 file:border-input file:text-foreground p-0 pr-3 italic file:me-3 file:h-full file:border-0 file:border-r file:border-solid file:bg-transparent file:px-3 file:text-sm file:font-medium file:not-italic",
                    className,
                )}
                ref={ref}
                {...props}
            />
        );
    },
);
 
Input.displayName = "Input";
 
export { Input };

Adjust the import paths in both files according to your project's structure.

Examples

W/ addon

.com

W/ helper text

We won‘t share your email with anyone

W/ icon

W/ floating label

OTP Input Single

pnpm add input-otp

OTP Input Double

OTP Input Spaced

OTP Input Phone

Built with react-phone-number-input