Section order; a quiet header precedes each non-empty bucket.
onRun *
(NockerlCommand) -> Unit
n/a
Invoked on row tap: ripple + haptic. No-op for a disabled row.
placeholder
String
"Search…"
Search-field placeholder for the recessed well.
SwiftUI exposes the palette as a View presented in a .sheet; the ⌘K trigger is a
standard .keyboardShortcut("k", modifiers: .command). State lives in @State
bindings; there is no explicit open parameter on the view itself.
Style
Type
Default
Description
query
Binding<String>
n/a
Two-way bound search text in the recessed field. Filters via localizedCaseInsensitiveContains (the HistoryView idiom).
Search-field prompt. The field carries a leading magnifier glyph.
onRun
(NockerlCommand) -> Void
n/a
Closure run when a row is chosen (click or ↵). Dismiss the sheet inside it.
Cross-platform drift (tracked for reconciliation)
The palette is a first-class surface on web + macOS and an adapted idiom on Android:
No shipped Android palette. The nearest live idiom is the modal bottom sheet
(NockerlBottomSheet / SessionSwitcherSheet). The Compose API above is intended,
not yet shipped. It reuses the sheet for the elevated-over-scrim launcher.
Trigger differs by platform. macOS uses a real ⌘K (.keyboardShortcut); web mirrors
it with ⌘K / Ctrl-K; Android has no physical hotkey: the launcher opens from the
GlobalTopBar search affordance, and per-row shortcut hints are decorative there.
Presentation differs. Web + macOS float a top-centered panel over a scrim; Android
presents the same content bottom-anchored as a sheet (the platform-native modal).