FilterBar

A simple search bar with applied filter pills. Best for resource lists with a few known filter dimensions.

Import

import { FilterBar } from '@aspect/react';

Usage

function ResourceList() {
  const [search, setSearch] = React.useState('');
  const [filters, setFilters] = React.useState([
    { key: 'status', label: 'Status', value: 'running' },
  ]);

  return (
    <FilterBar
      searchValue={search}
      onSearchChange={setSearch}
      appliedFilters={filters}
      onRemoveFilter={(key) => setFilters((f) => f.filter((x) => x.key !== key))}
      onClearAll={() => setFilters([])}
      placeholder="Search apps…"
    />
  );
}

Props

| Prop | Type | Default | Description | | ---------------- | ------------------------------------------------- | ----------- | ------------------------------------------ | | searchValue | string | — | Current search input value | | onSearchChange | (value: string) => void | — | Called when search input changes | | appliedFilters | { key: string; label: string; value: string }[] | [] | Active filter pills | | onRemoveFilter | (key: string) => void | — | Called when a filter pill is dismissed | | onClearAll | () => void | — | Called when "Clear all" is clicked | | placeholder | string | 'Search…' | Input placeholder text | | actions | React.ReactNode | — | Slot for action buttons next to the search |

When to use

CSS class

<div class="mizu-filter-bar">
  <div class="mizu-filter-bar__controls">...</div>
  <div class="mizu-filter-bar__pills">
    <span class="mizu-filter-pill">...</span>
  </div>
</div>