Palette
Elevation
Rounded
terminal Grouped commands
groups Custom item snippet
list Without groups


Svelte
<script lang="ts">
    import Command from "./Command.svelte";
    import type { CommandItem, CommandGroup } from "./command.config";

    let open = $state(false);

    const items: CommandItem[] = [
        { id: "new-file", label: "New File", hint: "Ctrl+N", group: "file" },
        { id: "save", label: "Save", hint: "Ctrl+S", group: "file" },
        { id: "undo", label: "Undo", hint: "Ctrl+Z", group: "edit" },
    ];

    const groups: CommandGroup[] = [
        { id: "file", label: "File" },
        { id: "edit", label: "Edit" },
    ];
</script>

<Button onclick={() => open = true}>Open Command</Button>

<Command
    bind:open
    {items}
    {groups}
    placeholder="Type a command…"
    onselect={(item) => console.log(item.label)}
/>

API


package_2

import type { CommandItem, CommandGroup } from '@abhc/spektral-ui';
PropTypeDefault
openbooleanfalse
itemsCommandItem[]—
groupsCommandGroup[][]
placeholderstring"Search..."
empty_placeholderstring"No results"
onselect(item: CommandItem) => void—
onclose() => void—
itemSnippet<[CommandItem]>—
emptySnippet—
palette"tone" | "accent" | "accentbg""tone"
roundedbooleanfalse
elevation"none" | "subtle" | "hard""subtle"
widthstring"560px"
Prop open
Type boolean
Default false
Prop items
Type CommandItem[]
Default —
Prop groups
Type CommandGroup[]
Default []
Prop placeholder
Type string
Default "Search..."
Prop empty_placeholder
Type string
Default "No results"
Prop onselect
Type (item: CommandItem) => void
Default —
Prop onclose
Type () => void
Default —
Prop item
Type Snippet<[CommandItem]>
Default —
Prop empty
Type Snippet
Default —
Prop palette
Type "tone" | "accent" | "accentbg"
Default "tone"
Prop rounded
Type boolean
Default false
Prop elevation
Type "none" | "subtle" | "hard"
Default "subtle"
Prop width
Type string
Default "560px"