Skip to content

shadcn.io is an independent project built on shadcn/ui

Free

With Footer Actions Combobox for Svelte

A workspace combobox that starts on Personal Workspace, with Manage Workspaces under the list.

UI library: Ark UI

Personal Workspace starts selected. Under the list, a separator and a Manage Workspaces button with a settings icon close the popup. That button is for managing, not for switching.

Use it for a switcher that also needs a way to add or manage what it lists. A list with no extra action is a plain Combobox. In Svelte, Ark UI does not add the footer button.

Preview

Preview width

Installation

MCP · Pro
Make your AI a shadcn expert
Your agent installs components, builds pages and restyles your app from one prompt, in Claude Code, Cursor or VS Code.
Part of Pro

Anatomy

Combobox anatomy: control, input, trigger, content, item, item indicator

Usage

<Combobox collection={collection} onInputValueChange={handleInputValueChange} onOpenChange={handleOpenChange} onValueChange={handleValueChange} open={open} positioning={{ getAnchorElement: () => triggerRef }} selectionBehavior="clear" value={value}><ComboboxTrigger class={cn(
          buttonVariants({ variant: "outline" }),
          "w-[250px] justify-between"
        )} bind:ref={triggerRef}>{#if selected}{selected.label}{:else}{"Select workspace..."}{/if}</ComboboxTrigger><ComboboxContent><ComboboxInput class="w-full" placeholder="Search workspaces..." showTrigger={false} /><ComboboxEmpty>No workspace found.</ComboboxEmpty><ComboboxList>{#each collection.items as workspace (workspace.value)}<ComboboxItem item={workspace}>{workspace.label}</ComboboxItem>{/each}</ComboboxList><ComboboxSeparator /><div class="p-1"><Button class="w-full justify-start text-xs" onclick={handleManage} variant="ghost"><SettingsIcon aria-hidden="true" data-icon="inline-start" />Manage Workspaces</Button></div></ComboboxContent></Combobox>

FAQ

API Reference

Combobox

Sets collection={collection}, onInputValueChange={handleInputValueChange}, onOpenChange={handleOpenChange}, onValueChange={handleValueChange}, open={open} and positioning. The rest is on the Combobox page.

Button

Sets onclick={handleManage} and variant="ghost". The rest is on the Button page.