BlockDex

Components

Registries

Free blocks

Method

BlockDex

Components

Registries

Free blocks

Method

Open API

BlockDex

Components

Registries

Free blocks

Method

Open API

Components/interlace-ui/command-palette

Command Palette

interlace-ui/command-palette
FreeComponent

⌘K. A modal surface holding one filterable list of actions.

Install it

npx shadcn@latest add https://ds.interlace.tools/r/command-palette.json

Source

registry/interlace-ui/command-palette.tsxds.interlace.tools/r/command-palette.json · first 6 KB
1'use client';
2
3import * as React from 'react';
4
5// @interlace/command-palette v1.0.0 — Interlace design system.
6// Docs, props and live preview: https://ds.interlace.tools/c/command-palette
7// What changed since: https://ds.interlace.tools/c/command-palette#history
8// Generated banner — keep it, the upgrade diff reads this version.
9
10/**
11 * @interlace/ui — CommandPalette
12 *
13 * ⌘K. A modal surface holding one filterable list of actions.
14 *
15 * This is a COMPOSITION, not a new primitive: `Dialog` supplies the modal
16 * (backdrop, focus trap, page inert, Escape, focus restore to the trigger),
17 * and `@base-ui/react/combobox` in `inline` mode supplies the field and the
18 * list (filtering, listbox ARIA, virtual focus, highlight). Neither half is
19 * reimplemented here — this file is the ~200 lines of surface that sit
20 * between them.
21 * Mirrors: https://ui.shadcn.com/docs/components/command (`CommandDialog`)
22 *
23 * ## Why `inline` is load-bearing
24 *
25 * `inline` is not a styling flag. It is the prop that makes a combobox
26 * legal inside a dialog, and Base UI's own source says so
27 * (`combobox/root/AriaCombobox.js`: "Support composing the Dialog component
28 * around an inline combobox"). Three things change:
29 *
30 * 1. No portal, no positioner. `ComboboxList` registers ITSELF as the
31 * positioner element, so the list renders in the dialog's flow instead
32 * of floating over it in a second portal — which is what makes the
33 * panel one surface and one scroll container.
34 * 2. Base UI walks `positionerElement.closest('[role="dialog"]')` to find
35 * the animated element. Our panel is a `Dialog.Popup`, so it matches.
36 * 3. `useDismiss` is DISABLED and Escape is allowed to bubble
37 * (`bubbles: inline ? true : undefined`). Without `inline`, the
38 * combobox swallows Escape to close its own popup and the dialog stays
39 * open — one Escape does nothing, and the user is in a surface they
40 * cannot leave from the keyboard (WCAG 2.1.2). This is the failure the
41 * keyboard lock exists to catch.
42 *
43 * The combobox root is held `open`, controlled, forever. In `inline` mode
44 * Base UI already treats the list as open internally, but the input's
45 * `aria-controls` is still gated on the root's own `open` state — so leaving
46 * it `false` ships a `role="combobox"` that points at nothing.
47 *
48 * ## Anatomy
49 *
50 * CommandPalette (Root) → Dialog.Root (open state)
51// … truncated

Facts

Registry
interlace-ui
Type
registry:ui
Access
Free
Files written
0
Licence
the repository states none
First indexed
2026-08-12
Last confirmed
today

Go to the source

ds.interlace.tools Raw registry item This item as JSON

More from interlace-ui

All 140 items
Same registry, same kind — the ones you would have found next
ComponentRegistryKindAccessInstallsCommand
A11y Startera11y-starterinterlace-uiComponentsFreeno deps
Accordionaccordioninterlace-uiComponentsFreeno deps
Alertalertinterlace-uiComponentsFreeno deps
Alert Dialogalert-dialoginterlace-uiComponentsFreeno deps
Animated Gradient Textanimated-gradient-textinterlace-uiComponentsFreeno deps
Animated Grid Patternanimated-grid-patterninterlace-uiComponentsFreeno deps
Animated Listanimated-listinterlace-uiComponentsFreeno deps
Article Cardarticle-cardinterlace-uiComponentsFreeno deps
BlockDex

Built by

Kynth Studios

the studio behind StoreReady, ToolDrift and BreachProbe

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

© 2026 BlockDex. A Kynth Studios product.

BlockDex

BlockDex

Built by

Kynth Studios

the studio behind StoreReady, ToolDrift and BreachProbe

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

© 2026 BlockDex. A Kynth Studios product.

BlockDex

BlockDex

Built by

Kynth Studios

the studio behind StoreReady, ToolDrift and BreachProbe

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

© 2026 BlockDex. A Kynth Studios product.

BlockDex