diff --git a/frontend/src/components/ui/DataBar/DataBar.jsx b/frontend/src/components/ui/DataBar/DataBar.jsx
index fedb1ce..3e10cb3 100644
--- a/frontend/src/components/ui/DataBar/DataBar.jsx
+++ b/frontend/src/components/ui/DataBar/DataBar.jsx
@@ -34,6 +34,8 @@ const DataBar = ({
className
}) => {
const [isFloating, setIsFloating] = useState(false);
+ const [searchTerm, setSearchTerm] = useState('');
+ const [activeSearch, setActiveSearch] = useState('');
useEffect(() => {
const handleScroll = () => {
@@ -44,12 +46,22 @@ const DataBar = ({
return () => window.removeEventListener('scroll', handleScroll);
}, []);
+ const handleSearch = term => {
+ setActiveSearch(term);
+ onSearch(term);
+ };
+
const controls = (
<>
diff --git a/frontend/src/components/ui/DataBar/SearchBar.jsx b/frontend/src/components/ui/DataBar/SearchBar.jsx
index cc974e4..1d9cc21 100644
--- a/frontend/src/components/ui/DataBar/SearchBar.jsx
+++ b/frontend/src/components/ui/DataBar/SearchBar.jsx
@@ -4,14 +4,14 @@ import {Search, X} from 'lucide-react';
const SearchBar = ({
onSearch,
placeholder = 'Search...',
- value = '',
- className = ''
+ className = '',
+ requireEnter = false,
+ searchTerm,
+ setSearchTerm,
+ activeSearch,
+ setActiveSearch
}) => {
- const [searchTerm, setSearchTerm] = useState(value);
-
- useEffect(() => {
- setSearchTerm(value);
- }, [value]);
+ const [isFocused, setIsFocused] = useState(false);
useEffect(() => {
const handleKeyDown = e => {
@@ -31,32 +31,72 @@ const SearchBar = ({
const handleChange = e => {
const newValue = e.target.value;
setSearchTerm(newValue);
- onSearch(newValue);
+ if (!requireEnter) {
+ onSearch(newValue);
+ setActiveSearch(newValue);
+ }
+ };
+
+ const handleKeyPress = e => {
+ if (requireEnter && e.key === 'Enter' && searchTerm.trim()) {
+ onSearch(searchTerm);
+ setActiveSearch(searchTerm);
+ setSearchTerm('');
+ }
};
const clearSearch = () => {
setSearchTerm('');
+ setActiveSearch('');
onSearch('');
};
return (
-
- {searchTerm && (
+
+
+ {activeSearch ? (
+
+
+ {activeSearch}
+
+
+
+ ) : (
+
setIsFocused(true)}
+ onBlur={() => setIsFocused(false)}
+ placeholder={placeholder}
+ className='w-full bg-transparent text-gray-900 dark:text-gray-100
+ placeholder:text-gray-500 dark:placeholder:text-gray-400
+ focus:outline-none'
+ />
+ )}
+
+
+ {searchTerm && !activeSearch && (