feat(web-ui): pass search-select handlers from App to Topbar

Wires onOpenAsset and onOpenProject through Topbar so that selecting
an asset/project from the global search opens the asset detail or
navigates to the project view. Adds openProjectFromAnywhere helper.
This commit is contained in:
Zac Gaetano 2026-05-22 23:53:19 -04:00
parent 45c0e0f914
commit 61d02d522b

View file

@ -24,6 +24,7 @@ function App() {
}, []);
const navigate = (id) => { setOpenAsset(null); setRoute(id); };
const openProjectFromAnywhere = (p) => { setOpenAsset(null); setOpenProject(p); setRoute('library'); };
const crumbs = React.useMemo(() => {
if (openAsset) return [
@ -67,7 +68,7 @@ function App() {
switch (route) {
case 'home': content = <Home navigate={navigate} />; break;
case 'library': content = <Library navigate={navigate} onOpenAsset={setOpenAsset} openProject={openProject} />; break;
case 'projects': content = <Projects navigate={navigate} onOpenProject={(p) => { setOpenProject(p); setRoute('library'); }} />; break;
case 'projects': content = <Projects navigate={navigate} onOpenProject={openProjectFromAnywhere} />; break;
case 'upload': content = <Upload navigate={navigate} />; break;
case 'recorders': content = <Recorders navigate={navigate} onNew={() => setShowNewRecorder(true)} />; break;
case 'schedule': content = <Schedule navigate={navigate} />; break;
@ -88,7 +89,14 @@ function App() {
<div className="app" data-density="comfortable" data-grid-size="md" data-sidebar="expanded">
<Sidebar active={openAsset ? 'library' : route} onNavigate={navigate} />
<div className="main">
{!openAsset && <Topbar crumbs={crumbs} onNavigate={navigate} />}
{!openAsset && (
<Topbar
crumbs={crumbs}
onNavigate={navigate}
onOpenAsset={setOpenAsset}
onOpenProject={openProjectFromAnywhere}
/>
)}
{content}
</div>
{showNewRecorder && <NewRecorderModal open={showNewRecorder} onClose={() => setShowNewRecorder(false)} />}