diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 1284cdf..9456799 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -3,11 +3,27 @@ import { useTranslation } from "react-i18next"; import { HeaderRoute } from "../components/HeaderRoute"; import { enc } from "../aes"; import CloakedHead from "../util/CloakedHead"; + export function Home() { const [isFocused, setIsFocused] = useState(false); + const [showSuggestions, setShowSuggestions] = useState(false); const [inputValue, setInputValue] = useState(""); + const [suggestions, setSuggestions] = useState([]); const { t } = useTranslation(); + const handleInputChange = async (event) => { + setInputValue((event.target as HTMLInputElement).value); + const newQuery = event.target.value; + setInputValue(newQuery); + + const response = await fetch(`/search=${newQuery}`).then((res) => + res.json() + ); + + const newSuggestions = response?.map((item) => item.phrase) || []; + setSuggestions(newSuggestions); + }; + const handleSubmit = (event) => { event.preventDefault(); window.location.href = @@ -38,25 +54,52 @@ export function Home() {
{ + setShowSuggestions(true); setIsFocused(true); }} onBlur={() => { setIsFocused(false); + setTimeout(() => { + setShowSuggestions(false); // delay so the user has time to click suggestions + }, 200); }} type="text" value={inputValue} - onChange={(e) => - setInputValue((e.target as HTMLInputElement).value) - } + onChange={handleInputChange} className={`font-roboto h-14 rounded-2xl border border-input-border-color bg-input p-2 text-center text-xl placeholder:text-input-text focus:outline-none ${ isFocused ? "w-10/12 md:w-3/12" : "w-80" } transition-all duration-300`} placeholder={isFocused ? "" : t("home.placeholder")} /> +
+
+ {showSuggestions && + suggestions.map((suggestion, index) => ( + +
{suggestion}
+
+ ))} + {/*} {isFocused && + Array.from({ length: 5 }, (_, index) => ( +
Example suggestion
+ ))} */} +
+
diff --git a/src/routes.tsx b/src/routes.tsx index 68afe0b..869231b 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -6,6 +6,7 @@ import { ProxyFrame } from "./pages/ProxyFrame.js"; import { Radon } from "./pages/Radon"; import { Settings } from "./pages/Settings/"; import { AboutBlank } from "./AboutBlank"; +import AutocompleteInput from "./Autocomplete"; import "./style.css"; import "./themes/main.css"; import "./i18n";