feat(ui): Schnellsuche mit Strg+K

Palette ueber die ganze Anwendung: Projekte nach Name, Kurzbeschreibung und
Tags, Notizen ueber die serverseitige Volltextsuche, dazu die Bereiche.
Ohne Eingabe stehen die zuletzt bearbeiteten Projekte bereit - danach sucht
man ueblicherweise.

Bedienung ueber Tastatur, wie man es erwartet: Pfeile waehlen, Enter oeffnet,
Escape schliesst, der ausgewaehlte Eintrag bleibt im Blick.

Die Projektliste wird beim ersten Oeffnen geholt und dann behalten. Sie bei
jedem Tastendruck neu zu laden waere Verschwendung, und veraltet ist sie
hoechstens um die Dauer einer Sitzung. Notizen sucht dagegen der Server,
entprellt ab zwei Zeichen - sie mitzuladen wuerde die Seite aufblaehen.

Wie Menue und Dialog haengt die Palette per Portal am body, aus denselben
Gruenden: overflow-hidden und backdrop-filter der Karten.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-26 11:36:44 +02:00
co-authored by Claude Opus 5
parent a237a79915
commit 3bad4ace10
2 changed files with 384 additions and 0 deletions
+4
View File
@@ -1,4 +1,5 @@
import type { Metadata, Viewport } from "next";
import { CommandPalette } from "@/components/CommandPalette";
import { TopNav } from "@/components/TopNav";
import { getSessionUser } from "@/lib/auth/session";
import { APP_NAME, APP_TAGLINE, APP_VERSION } from "@/lib/config";
@@ -45,6 +46,9 @@ export default async function RootLayout({
<TopNav user={user} appName={APP_NAME} tagline={APP_TAGLINE} />
{/* Nur fuer Angemeldete – auf der Anmeldeseite gibt es nichts zu suchen. */}
{user ? <CommandPalette isAdmin={user.role === "ADMIN"} /> : null}
<main className="mx-auto w-full max-w-[1400px] px-4 pb-24 pt-6 sm:px-6 lg:px-8">
{children}
</main>