Files
AfiS-Aktensystem/web/components/palette/PaletteTrigger.tsx
T
Harlekin e0b03ea336
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Gedankenstriche durch Bindestriche ersetzt
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die
README; an keiner Stelle Bedeutung, nur Zeichensetzung.
2026-09-04 08:54:52 +02:00

35 lines
988 B
TypeScript

'use client'
import dynamic from 'next/dynamic'
import { useEffect, useState } from 'react'
const CommandPalette = dynamic(
() => import('./CommandPalette').then((modul) => modul.CommandPalette),
{ ssr: false },
)
/**
* Strg+K.
*
* Absichtlich winzig: dieser Teil steckt in jeder Seite, und die Fallakte hat
* kein Bündel übrig. Die Palette selbst wird erst geholt, wenn jemand sie
* öffnet - vorher ist sie ein Tastaturereignis und sonst nichts.
*/
export function PaletteTrigger() {
const [offen, setOffen] = useState(false)
useEffect(() => {
const handler = (event: KeyboardEvent) => {
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'k') {
event.preventDefault()
setOffen((vorher) => !vorher)
}
}
window.addEventListener('keydown', handler)
return () => window.removeEventListener('keydown', handler)
}, [])
if (!offen) return null
return <CommandPalette onClose={() => setOffen(false)} />
}