import { ChangeEvent } from "../utils/types.js";
import "../utils/index.js";
import { ButtonProps } from "../button/button.types.js";
import "../button/index.js";
import { SelectOptionData, SelectValue } from "./select.types.js";
import { ReactNode } from "react";

//#region src/select/useSelect.types.d.ts
type UseSelectProps = {
  /** Currently selected value in controlled mode. */
  value?: SelectValue | SelectValue[];
  /** Provides initial value in uncontrolled mode. */
  defaultValue?: SelectValue | SelectValue[];
  /** Allows choosing multiple values. Popover won't close automatically on item click. */
  isMultiple?: boolean;
  /** List of all available options */
  options?: SelectOptionData[];
  /** Select children elements for dynamic handling */
  children?: ReactNode;
  /** Props added to the select button */
  selectButtonProps?: ButtonProps;
  /** Displayed inside the trigger when multiple options selected. */
  selectedText?: string;
  /**
   * Callback triggered when an option is selected.
   *
   * WARNING: In reality it's a click event extended with our own 'value' and 'name' on e.target.
   * It's this way to support external form libraries and typed as input ChangeEvent to avoid type conflicts.
   */
  onChange?: (e: ChangeEvent) => void;
};
//#endregion
export { UseSelectProps };

//# sourceMappingURL=useSelect.types.d.ts.map