Command palette: a filterable role="listbox" of role="option" commands
with arrow/Home/End/PageUp/PageDown navigation that skips disabled options,
type-to-filter (matching text + data-hl-keywords), automatic empty-state
and group hiding, Escape to clear the query (or close the hosting <dialog>
once it's empty), and Enter to run the active command (emits a cancelable
hl:command CustomEvent). Options are read live, so commands rendered
later are filterable too. The filter query is observable through
onValueChange/hl:change and controllable through the returned API. When
the palette lives inside a <dialog>, the dialog's open state is exposed
as open/setOpen and onOpenChange/hl:open-change, a command closes it
by default, and an optional hotkey opens it with Cmd/Ctrl+key. Without
JavaScript the full list simply renders; the root is marked data-hl-ready
once filtering is live. Markup can set data-hl-hotkey,
data-hl-close-on-command, data-hl-default-value, and
data-hl-default-open on the root.
Command palette: a filterable
role="listbox"ofrole="option"commands with arrow/Home/End/PageUp/PageDown navigation that skips disabled options, type-to-filter (matching text +data-hl-keywords), automatic empty-state and group hiding, Escape to clear the query (or close the hosting<dialog>once it's empty), and Enter to run the active command (emits a cancelablehl:commandCustomEvent). Options are read live, so commands rendered later are filterable too. The filter query is observable throughonValueChange/hl:changeand controllable through the returned API. When the palette lives inside a<dialog>, the dialog's open state is exposed asopen/setOpenandonOpenChange/hl:open-change, a command closes it by default, and an optional hotkey opens it with Cmd/Ctrl+key. Without JavaScript the full list simply renders; the root is markeddata-hl-readyonce filtering is live. Markup can setdata-hl-hotkey,data-hl-close-on-command,data-hl-default-value, anddata-hl-default-openon the root.