shadcn.io is an independent project built on shadcn/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.
Installation
Anatomy

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
Where does the footer live?
Inside ComboboxContent, after ComboboxList: a ComboboxSeparator, then a p-1 block with a full-width ghost Button, justify-start text-xs.
What does Manage Workspaces do?
It closes the list. Open your settings page or a dialog from the same handler.
The demo controls open and sets it to false.
Can the footer be reached with the arrow keys?
No, the arrow keys move between workspaces. Reach the button with Tab or the pointer. Make it an option in the list if keyboard users need it often.
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.





