aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/dashboard/search/SearchInput.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/components/dashboard/search/SearchInput.tsx')
-rw-r--r--apps/web/components/dashboard/search/SearchInput.tsx25
1 files changed, 25 insertions, 0 deletions
diff --git a/apps/web/components/dashboard/search/SearchInput.tsx b/apps/web/components/dashboard/search/SearchInput.tsx
new file mode 100644
index 00000000..73d14c90
--- /dev/null
+++ b/apps/web/components/dashboard/search/SearchInput.tsx
@@ -0,0 +1,25 @@
+import { Input } from "@/components/ui/input";
+import { useDoBookmarkSearch } from "@/lib/hooks/bookmark-search";
+import { cn } from "@/lib/utils";
+import React from "react";
+
+const SearchInput = React.forwardRef<
+ HTMLInputElement,
+ React.HTMLAttributes<HTMLInputElement> & { loading?: boolean }
+>(({ className, loading = false, ...props }, ref) => {
+ const { debounceSearch, searchQuery } = useDoBookmarkSearch();
+
+ return (
+ <Input
+ ref={ref}
+ placeholder="Search"
+ defaultValue={searchQuery}
+ onChange={(e) => debounceSearch(e.target.value)}
+ className={cn(loading ? "animate-pulse-border" : undefined, className)}
+ {...props}
+ />
+ );
+});
+SearchInput.displayName = "SearchInput";
+
+export { SearchInput };