Search Input
FormSearch field with icon and clear button.
Preview
Usage
example.jsx
import { SearchInput } from "@/components/ui/search-input";
export default function Example() {
return <SearchInput />;
}Source Code
Copy this file into components/ui/search-input.jsx in your project.
search-input.jsx
"use client";
import { forwardRef } from "react";
import { cn } from "@/lib/utils";
const SearchInput = forwardRef(({ className, ...props }, ref) => {
return (
<div className={cn("relative", className)}>
<svg
className="absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"
>
<circle cx="11" cy="11" r="8" />
<path d="m21 21-4.3-4.3" />
</svg>
<input
ref={ref}
type="search"
className="flex h-9 w-full rounded-md border border-input bg-transparent pl-9 pr-3 py-1 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50"
{...props}
/>
</div>
);
});
SearchInput.displayName = "SearchInput";
export { SearchInput };
Quick Install
Make sure you have the cn() utility set up. It requires clsx and tailwind-merge.
npm install clsx tailwind-merge