import "./number_filter.css"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { type NumberInputBase } from "./number_input"; import { type ColumnFilterValue, type FilterUnits } from "./column_filter"; import { type StyleProps } from "./style_props"; /** A figure's range: from `min` to `max`, both held, an open end `null`; `unit` a key of the figure's `units`. */ export type NumberRange = Extract; export interface NumberFilterProps extends StyleProps { /** The figure's name, which names the two ends as a group and the unit picker ("Weight unit"). */ label: string; value: NumberRange; onValueChange: (value: NumberRange) => void; /** A figure read in each row's own unit or currency: the one the range is typed in, picked beside the ends. */ units?: FilterUnits; /** How each end is typed and reads, as `NumberInput` takes it — money's or a percent's `format`, a quantity's * `unit`. Unset, a bare figure, a `units` figure's unit named by its picker. */ figure?: Pick; /** The small domain the figure lives in — a percent, a figure against a fixed bound: a range `Slider` over it * above the ends, a thumb at an edge leaving that end open, so the figures past it stay in. Never for an * open-ended amount, which the ends alone type. */ bounds?: readonly [number, number]; testID?: string; ref?: React.Ref; render?: useRender.RenderProp; } /** * A FIGURE'S RANGE, as a filter's editor inside a `FilterChip`: from and to, each headed by its word and typed in * the figure's own notation, applied as typed, each field as wide as the figures it takes; a figure read in each row's own unit adds the * picker of the unit the range is typed in, and one living in a small domain a `Slider` over it, reading the * domain's ends, which the empty ends hint too. The pill's words are the caller's (`figureRange`). */ export declare function NumberFilter(props: NumberFilterProps): React.ReactElement>;