You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							1.8 KiB
						
					
					
				| 'use client';
 | |
| 
 | |
| import { X } from 'lucide-react';
 | |
| 
 | |
| import { useSearchStore } from '@/stores/search-store';
 | |
| import { cn } from '@/lib/utils';
 | |
| 
 | |
| type SearchInputProps = {
 | |
|   hasResults: boolean;
 | |
| };
 | |
| 
 | |
| export function SearchInput({ hasResults }: SearchInputProps) {
 | |
|   const query = useSearchStore((state) => state.query);
 | |
|   const setQuery = useSearchStore((state) => state.setQuery);
 | |
| 
 | |
|   return (
 | |
|     <>
 | |
|       <input
 | |
|         type="text"
 | |
|         autoFocus
 | |
|         value={query}
 | |
|         onChange={(e) => setQuery(e.target.value)}
 | |
|         placeholder={
 | |
|           placeholders[Math.floor(Math.random() * placeholders.length)]
 | |
|         }
 | |
|         className={cn(
 | |
|           'w-full rounded border px-2 placeholder:opacity-50',
 | |
|           hasResults ? 'sm:text-2xl' : 'sm:text-4xl',
 | |
|           'border-slate-400 bg-slate-100 text-slate-700',
 | |
|           'dark:border-slate-500 dark:bg-slate-700 dark:text-rose-50',
 | |
|         )}
 | |
|         aria-label="Поиск"
 | |
|       />
 | |
|       {query && (
 | |
|         <button
 | |
|           onClick={() => setQuery('')}
 | |
|           className={cn(
 | |
|             'absolute right-14 top-[1.1rem]',
 | |
|             hasResults ? 'sm:top-5' : 'sm:top-7',
 | |
|           )}
 | |
|         >
 | |
|           <X
 | |
|             className="icon-base text-slate-500 dark:text-slate-400"
 | |
|             aria-label="Clear"
 | |
|           />
 | |
|         </button>
 | |
|       )}
 | |
|     </>
 | |
|   );
 | |
| }
 | |
| 
 | |
| const placeholders = [
 | |
|   'What are you looking for?',
 | |
|   'Something need doing?',
 | |
|   'Looking for something specific?',
 | |
|   'Looking for something special?',
 | |
|   'Ah, I have just the thing for you.',
 | |
|   'What brings you here?',
 | |
|   'Whatcha lookin for?',
 | |
|   "You need somethin'?",
 | |
|   'I got what you need!',
 | |
|   'Yeah, what do you want?',
 | |
|   'What do you require?',
 | |
|   'I have exactly what you need.',
 | |
|   'What can I get for ya today?',
 | |
|   'May you find what you seek.',
 | |
|   "I hope you'll find something useful!",
 | |
|   'Feel free to browse.',
 | |
| ];
 | |
| 
 |