import React, { type ReactNode, type CSSProperties, type ForwardedRef, type DetailedHTMLProps, type SelectHTMLAttributes, type ChangeEvent } from "react"; import type { FrClassName } from "./fr/generatedFromCss/classNames"; export type SelectProps = { id?: string; options: Options; className?: string; label: ReactNode; hint?: ReactNode; nativeSelectProps?: Omit, HTMLSelectElement>, "value" | "onChange"> & { value?: Options[number]["value"]; onChange?: (e: Omit, "target" | "currentTarget"> & { target: Omit & { value: Options[number]["value"]; selectedOptions: HTMLCollectionOf & { value: Options[number]["value"]; }>; }; currentTarget: Omit & { value: Options[number]["value"]; selectedOptions: HTMLCollectionOf & { value: Options[number]["value"]; }>; }; }) => void; }; /** Default: false */ disabled?: boolean; /** Default: "default" */ state?: SelectProps.State | "default"; /** The message won't be displayed if state is "default" */ stateRelatedMessage?: ReactNode; style?: CSSProperties; placeholder?: string; }; export declare namespace SelectProps { export type Option = { value: T; label: ReactNode; disabled?: boolean; /** Default: false, should be used only in uncontrolled mode */ selected?: boolean; }; type ExtractState = FrClassName extends `fr-select-group--${infer State}` ? Exclude : never; export type State = ExtractState; export {}; } /** * @see * */ declare function NonMemoizedNonForwardedSelect(props: SelectProps, ref: React.LegacyRef): JSX.Element; export declare const Select: []>(props: SelectProps & { ref?: React.ForwardedRef | undefined; }) => ReturnType; export default Select; declare const addSelectTranslations: (params: { lang: string; messages: Partial<{ "select an option": string; }>; }) => void; export { addSelectTranslations };