Skip to content

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

Free

Clear/Reset Button Combobox for Svelte

A theme combobox that starts on System and shows an X beside the chevron until the theme is cleared.

UI library: Ark UI

Light, Dark, and System are the choices, and System starts selected. While a theme is set, an X beside the chevron clears it and the button returns to Select theme...

Use it for an optional field, where empty is a valid answer. A value people must keep should drop the X and stay a plain Select. In Svelte, Ark UI does not add that clear 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

<div class="relative w-[200px]"><Combobox collection={collection} onInputValueChange={handleInputValueChange} onValueChange={handleValueChange} positioning={{ getAnchorElement: () => triggerRef }} selectionBehavior="clear" value={value}><ComboboxTrigger class={cn(
            buttonVariants({ variant: "outline" }),
            "w-full justify-between pe-3"
          )} bind:ref={triggerRef}>{#if selected}{selected.label}{:else}{"Select theme..."}{/if}</ComboboxTrigger><ComboboxContent><ComboboxInput class="w-full" placeholder="Search themes..." showTrigger={false} /><ComboboxEmpty>No theme found.</ComboboxEmpty><ComboboxList>{#each collection.items as theme (theme.value)}<ComboboxItem item={theme}>{theme.label}</ComboboxItem>{/each}</ComboboxList></ComboboxContent></Combobox>{#if selected}<Button aria-label="Clear theme" class="absolute end-8 top-1/2 -translate-y-1/2" onclick={handleClear} size="icon-xs" variant="ghost"><XIcon aria-hidden="true" /></Button>{:else}{/if}</div>

FAQ

Where is the clear button?

In a relative wrapper around the combobox, positioned absolute end-8 so it lands just before the chevron. It sits next to the trigger, not inside it, since a button can't contain another button.

What does it do?

It empties the value the demo keeps in state, and the combobox shows its placeholder. The value becomes [].

When is it shown?

Only while a theme is selected. With nothing to clear it isn't rendered.

How is the button labelled?

It's a ghost icon-xs Button with an XIcon and aria-label Clear theme, since the icon has no text.

Which themes are listed?

Light, Dark and System. The search box says Search themes..., and No theme found. shows when nothing matches.

Should clearing go back to a default instead?

If the field always needs a value, set it back to the default, such as System, rather than to empty, and label the button Reset.

API Reference

Combobox

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

Button

Sets aria-label="Clear theme", onclick={handleClear}, size="icon-xs" and variant="ghost". The rest is on the Button page.