diff --git a/frontend/src/App.css b/frontend/src/App.css index 3ca4eb4..6b2add8 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -1042,6 +1042,53 @@ a.app-footer__repo:hover { border-radius: 0.625rem; } +/* ── Nav search variant ───────────────────────────────────────────────────── */ + +.search-container--nav { + position: relative; + max-width: 16rem; + margin: 0; +} + +.search-form--nav { + gap: 0; + position: relative; +} + +.search-input--nav { + padding: 0.375rem 2.75rem 0.375rem 0.75rem; + font-size: 0.8125rem; + border-radius: 0.375rem; + background: var(--color-bg-input); + border-color: var(--color-border); +} + +.search-input--nav::placeholder { + color: var(--color-text-muted); + opacity: 0.7; +} + +.search-nav__shortcut { + position: absolute; + right: 0.5rem; + top: 50%; + transform: translateY(-50%); + font-size: 0.625rem; + font-family: inherit; + color: var(--color-text-muted); + background: var(--color-bg-page); + border: 1px solid var(--color-border); + border-radius: 0.25rem; + padding: 0.0625rem 0.3125rem; + line-height: 1.4; + pointer-events: none; +} + +.search-container--nav .typeahead-dropdown { + z-index: 200; + min-width: 20rem; +} + .btn--search { background: var(--color-btn-search-bg); color: var(--color-btn-search-text); diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 2dd144e..cf74b5b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,4 @@ -import { Link, Navigate, Route, Routes } from "react-router-dom"; +import { Link, Navigate, Route, Routes, useLocation, useNavigate } from "react-router-dom"; import Home from "./pages/Home"; import SearchResults from "./pages/SearchResults"; import TechniquePage from "./pages/TechniquePage"; @@ -11,14 +11,27 @@ import AdminPipeline from "./pages/AdminPipeline"; import About from "./pages/About"; import AdminDropdown from "./components/AdminDropdown"; import AppFooter from "./components/AppFooter"; +import SearchAutocomplete from "./components/SearchAutocomplete"; export default function App() { + const location = useLocation(); + const navigate = useNavigate(); + const showNavSearch = location.pathname !== "/"; + return (

Chrysopedia

+ {showNavSearch && ( + navigate(`/search?q=${encodeURIComponent(q)}`)} + /> + )}