diff --git a/components/Search.tsx b/components/Search.tsx
index 34fce9f..fb019d3 100644
--- a/components/Search.tsx
+++ b/components/Search.tsx
@@ -1,17 +1,61 @@
-// import { useState } from 'react'
+import { useState } from 'react'
+import Link from 'next/link'
+
+
+import { makeBotURL } from '@utils/Tools'
+import Fetch from '@utils/Fetch'
+import { BotList, ResponseProps } from '@types'
+
+import DiscordAvatar from './DiscordAvatar'
const Search = (): JSX.Element => {
- return
-
-
-
-}
+ const [ query, setQuery ] = useState('')
+ const [ data, setData ] = useState>(null)
+ const [ loading, setLoading ] = useState(false)
+ const [ abortControl, setAbortControl ] = useState(new AbortController())
+ const [ hidden, setHidden ] = useState(true)
+ const SearchResults = async (value: string) => {
+ setQuery(value)
+ try { abortControl.abort() } catch { return null }
+ const controller = new AbortController()
+ setAbortControl(controller)
+ if(value.length > 2) setLoading(true)
+ const res = await Fetch(`/search/bots?q=${encodeURIComponent(value)}`, { signal: controller.signal })
+ setData(res)
+ setLoading(false)
-interface SearchProps {
- query: string
- result: string
+ }
+ return <>
+
+ setHidden(false)} onBlur={() => setHidden(true)} className='bg-transparent flex-grow outline-none border-none shadow border-0 py-3 px-7 pr-20 h-16 text-xl' placeholder='검색...' value={query} onChange={(e)=> {
+ SearchResults(e.target.value)
+ }} />
+
+
+
+
+
+ {
+ data && data.code === 200 && data.data ? data.data.data.length === 0 ? - 검색 결과가 없습니다.
:
+ data.data.data.map(el =>
+ -
+
+
+
{el.name}
+
+ {el.intro}
+
+
+
+ ) : loading ? - 검색중입니다...
: - {query && data ? data?.errors && data.errors[0] || data.message : query.length < 3 ? '최소 2글자 이상 입력해주세요.' : '검색어를 입력해주세요.'}
+ }
+
+
+
+
+ >
}
export default Search