import { TemplateResult } from 'lit'; import { BahtElement } from '../base.js'; import { FieldOption } from '../../core/types.js'; export type FilterVariant = 'chips' | 'segmented'; /** * Filter chip group. Controlled: emits `baht-change { selected }` (array of * option keys), host re-feeds `selected`. Typical use: above an , * the handler refetches page 1 with the new filters. * * const f = document.querySelector('baht-filter'); * f.options = [{ key: 'running', label: 'Running' }, { key: 'failed', label: 'Failed' }]; * f.selected = ['running']; * f.addEventListener('baht-change', (e) => refetch({ status: e.detail.selected })); * * `variant="segmented"` draws the same options as one joined segmented * control (a single bordered group, active segment filled with the ink * colour) — for a period switch like Week / Month / Year. Pair it with * `multiple="false"`: a segmented control always holds one value, so clicking * the active segment does nothing (no `baht-change`) instead of clearing it. */ export declare class BahtFilter extends BahtElement { options: FieldOption[]; selected: string[]; /** Look: `'chips'` (default) = separate pill chips; `'segmented'` = one joined * segmented control. With `multiple=false` a segmented control never clears. */ variant: FilterVariant; /** false = radio behavior (max one active; clicking it again clears — except * with `variant="segmented"`, where the active segment stays selected). */ multiple: boolean; disabled: boolean; /** Accessible name for the chip group. */ label: string; private toggle; protected render(): TemplateResult; }