2025-10-09 16:35:19 +09:00
|
|
|
|
"use client";
|
|
|
|
|
|
import { useRouter } from "next/navigation";
|
|
|
|
|
|
import { useState } from "react";
|
|
|
|
|
|
|
|
|
|
|
|
export function SearchBar() {
|
|
|
|
|
|
const router = useRouter();
|
|
|
|
|
|
const [term, setTerm] = useState("");
|
|
|
|
|
|
return (
|
|
|
|
|
|
<form
|
|
|
|
|
|
onSubmit={(e) => {
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
const q = term.trim();
|
|
|
|
|
|
router.push(q ? `/search?q=${encodeURIComponent(q)}` : "/search");
|
|
|
|
|
|
}}
|
2025-10-13 08:16:47 +09:00
|
|
|
|
role="search"
|
|
|
|
|
|
aria-label="사이트 검색"
|
2025-10-09 16:35:19 +09:00
|
|
|
|
style={{ display: "flex", gap: 8, alignItems: "center" }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<input
|
2025-10-13 08:16:47 +09:00
|
|
|
|
type="search"
|
|
|
|
|
|
name="q"
|
2025-10-09 16:35:19 +09:00
|
|
|
|
value={term}
|
|
|
|
|
|
onChange={(e) => setTerm(e.target.value)}
|
|
|
|
|
|
placeholder="검색어 입력"
|
2025-10-13 08:16:47 +09:00
|
|
|
|
enterKeyHint="search"
|
|
|
|
|
|
aria-label="검색어"
|
|
|
|
|
|
onKeyDown={(e) => {
|
|
|
|
|
|
if (e.key === "Escape") setTerm("");
|
|
|
|
|
|
}}
|
|
|
|
|
|
style={{ padding: "6px 8px", border: "1px solid #ddd", borderRadius: 6, minWidth: 160 }}
|
2025-10-09 16:35:19 +09:00
|
|
|
|
/>
|
2025-10-13 08:16:47 +09:00
|
|
|
|
{term && (
|
|
|
|
|
|
<button type="button" aria-label="검색어 지우기" onClick={() => setTerm("")}>×</button>
|
|
|
|
|
|
)}
|
2025-10-09 16:35:19 +09:00
|
|
|
|
<button type="submit">검색</button>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|