import "./filter_band.css"; import { type ReactNode } from "react"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { type StyleProps } from "./style_props"; /** How the nearest enclosing `FilterBand` wants its filters drawn. `"chip"` * outside a band, so a lone `FilterChip` is unaffected. */ export declare function useFilterBandPresentation(): "chip" | "row"; export interface FilterBandProps extends StyleProps { /** The search control. Stays on the band at every width — it is the one * filter people reach for without thinking. */ search?: ReactNode; /** The band's primary action. Stays visible at every width, because a screen * whose only verb is behind a filter sheet reads as read-only. */ action?: ReactNode; /** How many dimensions are filtering right now — badges the collapsed * button, so a narrow screen still says the list is not showing everything. */ activeCount?: number; /** Clears every dimension at once. Rendered inside the sheet when given. */ onClearAll?: () => void; children: ReactNode; testID?: string; ref?: React.Ref; render?: useRender.RenderProp; } /** * The toolbar row above a list: search, the secondary filter dimensions, and * the screen's primary action. * * **On a narrow screen the dimensions collapse into ONE button.** The chips move * into a sheet and render as full-width rows there — the SAME `FilterChip`s, * re-presented, so a filter never has two implementations to keep in step. * * Search and the action never collapse. Where all three will not fit, the band * takes a SECOND row rather than a narrower field. * * IT IS NOT A BASE UI `Toolbar`, and that is a decision. A `Toolbar.Root` * selects a native input's whole value the moment focus lands anywhere inside * it, and claims the arrow keys at either end of the caret — wrong for the * search field this band is built around. `SelectionBar` IS a `Toolbar` for the * mirror reason: every control on it acts on the selection, and none is a text * field. */ export declare function FilterBand(props: FilterBandProps): React.ReactElement>;