import { Select as Primitive } from "@base-ui/react/select"; import type { ReactNode } from "react"; import { type StateClassName } from "./class-name.ts"; export declare const SelectRoot: typeof Primitive.Root; export declare const SelectTrigger: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectValue: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectIcon: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectPortal: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectPositioner: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectPopup: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectList: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectItem: import("react").NamedExoticComponent & import("react").RefAttributes>; export declare const SelectItemIndicator: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectItemText: import("react").NamedExoticComponent & import("react").RefAttributes>; export declare const SelectGroup: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectGroupLabel: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export declare const SelectSeparator: import("react").ForwardRefExoticComponent>; export interface SelectOption { value: T; label: string; disabled?: boolean; icon?: ReactNode; } export type SelectProps = Omit, "children" | "items" | "defaultValue" | "multiple"> & { options?: readonly SelectOption[]; /** Shown while nothing is selected. No default because a default would be English. */ placeholder?: ReactNode; /** * Shown instead of the list when `options` is empty. Required, because a popup that opens * on nothing is a dead end: this is the line that says why it is empty. */ emptyLabel: ReactNode; /** * Label of an entry that puts the field back to nothing selected, for an optional question where * "I'd rather not say" has to stay reachable after the first answer. Rendered only once there is * a value to take back; picking it calls `onValueChange(null)`. */ clearLabel?: string; /** Accessible name for the trigger, when no visible label points at it. */ label?: string; /** Mark that says "this opens". */ chevron?: ReactNode; /** Mark next to the selected option. */ indicator?: ReactNode; /** Classes for the trigger button, which you see when the popup is closed. */ className?: StateClassName; popupClassName?: StateClassName; triggerProps?: Primitive.Trigger.Props; /** * Positioner props: `align`, `side`, `sideOffset`, `collisionPadding` and the stacking order. The * default `z-[60]` puts the list above the overlay layer (z-50: dialog, drawer); raise it with * `positionerProps={{ className: "z-[80]" }}` if the app stacks something higher than a dialog * above it. */ positionerProps?: Primitive.Positioner.Props; }; /** * A single-choice field. Trigger, portal, positioner, popup and list composed once; `name`, * `form`, `required`, `id`, `disabled` and every other root prop pass straight through to * Base UI's hidden input, so this submits inside a `
` like a native `