Searchbar Svelte Component

Searchbar allows user to search through List View elements. Or it can be used as a visual UI component for your custom search realization.

Contents

Searchbar Components

There are following components included:

  • Searchbar

Searchbar Props

NameTypeDefaultDescription
clearButtonbooleantrue

Adds input clear button

colorsobject

Object with Tailwind CSS colors classes

colors.inputBgIosstring''
colors.inputBgMaterialstring'bg-md-light-secondary-container dark:bg-md-dark-secondary-container'
colors.placeholderIosstring''
colors.placeholderMaterialstring'placeholder-md-light-on-surface-variant dark:placeholder-md-dark-on-surface-variant'
disableButtonbooleanfalse

Adds button for cancel search and set its initial state

inputIdstring

Input id attribute

inputStyleCSSProperties

Additional input classes

onBlurfunction(e)

blur

onChangefunction(e)

change

onClearfunction(e)

Fired on clear button click

onDisablefunction(e)

Fired on searchbar disable

onFocusfunction(e)

focus

onInputfunction(e)

input

placeholderstring | number'Search'

Searchbar placeholder

valueany

Searchbar value

Examples

Searchbar.svelte
<script>
import {
Page,
Navbar,
NavbarBackLink,
Searchbar,
List,
ListItem,
} from 'konsta/svelte';
let searchQuery = $state('');
let items = [
{ title: 'FC Ajax' },
{ title: 'FC Arsenal' },
{ title: 'FC Athletic' },
{ title: 'FC Barcelona' },
{ title: 'FC Bayern München' },
{ title: 'FC Bordeaux' },
{ title: 'FC Borussia Dortmund' },
{ title: 'FC Chelsea' },
{ title: 'FC Galatasaray' },
{ title: 'FC Juventus' },
{ title: 'FC Liverpool' },
{ title: 'FC Manchester City' },
{ title: 'FC Manchester United' },
{ title: 'FC Paris Saint-Germain' },
{ title: 'FC Real Madrid' },
{ title: 'FC Tottenham Hotspur' },
{ title: 'FC Valencia' },
{ title: 'FC West Ham United' },
];
function handleSearch(e) {
searchQuery = e.target.value;
}
function handleClear() {
searchQuery = '';
}
function handleDisable() {
console.log('Disable');
}
let filteredItems = $derived.by(() =>
searchQuery
? items.filter((item) =>
item.title.toLowerCase().includes(searchQuery.toLowerCase())
)
: items
);
</script>
<Page>
<Navbar title="Searchbar">
{#snippet left()}
{#if !isPreview}
<NavbarBackLink onclick={() => history.back()} />
{/if}
{/snippet}
{#snippet subnavbar()}
<Searchbar
onInput={handleSearch}
value={searchQuery}
onClear={handleClear}
disableButton
disableButtonText="Cancel"
onDisable={handleDisable}
/>
{/snippet}
</Navbar>
<List strong inset>
{#if filteredItems.length === 0}
<ListItem title="Nothing found" />
{/if}
{#each filteredItems as item (item.title)}
<ListItem key={item.title} title={item.title} />
{/each}
</List>
</Page>
Code licensed under MIT.
2025 © Konsta UI by nolimits4web.