"""Stub file for reflex/components/chakra/forms/multiselect.py"""
# ------------------- DO NOT EDIT ----------------------
# This file was generated by `scripts/pyi_generator.py`!
# ------------------------------------------------------

from typing import Any, Dict, Literal, Optional, Union, overload
from reflex.vars import Var, BaseVar, ComputedVar
from reflex.event import EventChain, EventHandler, EventSpec
from reflex.style import Style
from typing import Any, Dict, List, Optional, Set, Union
from reflex.base import Base
from reflex.components.component import Component
from reflex.constants import EventTriggers
from reflex.vars import Var

class Option(Base):
    label: str
    value: Any
    variant: Optional[str]

class Select(Component):
    def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
    @classmethod
    def get_initial_props(cls) -> Set[str]: ...
    @overload
    @classmethod
    def create(  # type: ignore
        cls,
        *children,
        auto_focus: Optional[Union[Var[bool], bool]] = None,
        backspace_removes_value: Optional[Union[Var[bool], bool]] = None,
        blur_input_on_select: Optional[Union[Var[bool], bool]] = None,
        capture_menu_scroll: Optional[Union[Var[bool], bool]] = None,
        chakra_styles: Optional[Union[Var[str], str]] = None,
        close_menu_on_select: Optional[Union[Var[bool], bool]] = None,
        close_menu_on_scroll: Optional[Union[Var[bool], bool]] = None,
        color_scheme: Optional[Union[Var[str], str]] = None,
        components: Optional[
            Union[Var[Dict[str, Component]], Dict[str, Component]]
        ] = None,
        control_should_render_value: Optional[Union[Var[bool], bool]] = None,
        delimiter: Optional[Union[Var[str], str]] = None,
        error_border_color: Optional[Union[Var[str], str]] = None,
        escape_clears_value: Optional[Union[Var[bool], bool]] = None,
        focus_border_color: Optional[Union[Var[str], str]] = None,
        form: Optional[Union[Var[str], str]] = None,
        hide_selected_options: Optional[Union[Var[bool], bool]] = None,
        input_value: Optional[Union[Var[str], str]] = None,
        input_id: Optional[Union[Var[str], str]] = None,
        is_clearable: Optional[Union[Var[bool], bool]] = None,
        is_disabled: Optional[Union[Var[bool], bool]] = None,
        is_invalid: Optional[Union[Var[bool], bool]] = None,
        is_multi: Optional[Union[Var[bool], bool]] = None,
        is_read_only: Optional[Union[Var[bool], bool]] = None,
        is_rtl: Optional[Union[Var[bool], bool]] = None,
        is_searchable: Optional[Union[Var[bool], bool]] = None,
        min_menu_height: Optional[Union[Var[int], int]] = None,
        max_menu_height: Optional[Union[Var[int], int]] = None,
        menu_placement: Optional[Union[Var[str], str]] = None,
        menu_position: Optional[Union[Var[str], str]] = None,
        menu_should_block_scroll: Optional[Union[Var[bool], bool]] = None,
        menu_should_scroll_into_view: Optional[Union[Var[bool], bool]] = None,
        name: Optional[Union[Var[str], str]] = None,
        open_menu_on_focus: Optional[Union[Var[bool], bool]] = None,
        open_menu_on_click: Optional[Union[Var[bool], bool]] = None,
        options: Optional[Union[Var[List[Dict]], List[Dict]]] = None,
        page_size: Optional[Union[Var[int], int]] = None,
        placeholder: Optional[Union[Var[Optional[str]], Optional[str]]] = None,
        required: Optional[Union[Var[bool], bool]] = None,
        selected_option_color_scheme: Optional[Union[Var[str], str]] = None,
        selected_option_style: Optional[Union[Var[str], str]] = None,
        size: Optional[Union[Var[str], str]] = None,
        tab_index: Optional[Union[Var[int], int]] = None,
        tab_selects_value: Optional[Union[Var[bool], bool]] = None,
        tag_variant: Optional[Union[Var[str], str]] = None,
        unstyled: Optional[Union[Var[bool], bool]] = None,
        use_basic_style: Optional[Union[Var[bool], bool]] = None,
        variant: Optional[Union[Var[str], str]] = None,
        style: Optional[Style] = None,
        key: Optional[Any] = None,
        id: Optional[Any] = None,
        class_name: Optional[Any] = None,
        autofocus: Optional[bool] = None,
        custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
        on_blur: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_change: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_click: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_context_menu: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_double_click: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_focus: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mount: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_down: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_enter: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_leave: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_move: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_out: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_over: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_mouse_up: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_scroll: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        on_unmount: Optional[
            Union[EventHandler, EventSpec, list, function, BaseVar]
        ] = None,
        **props,
    ) -> "Select":
        """Takes a list of options and additional properties, checks if each option is an
        instance of Option, and returns a Select component with the given options and
        properties. No children allowed.

        Args:
            options (List[Option | str | int | float | bool]): A list of values.
            auto_focus: Focus the control when it is mounted
            backspace_removes_value: Remove the currently focused option when the user presses backspace   when Select isClearable or isMulti
            blur_input_on_select: Remove focus from the input when the user selects an option  (handy for dismissing the keyboard on touch devices)
            capture_menu_scroll: When the user reaches the top/bottom of the menu,  prevent scroll on the scroll-parent
            chakra_styles: [chakra]  To use the chakraStyles prop, first,  check the documentation for the original styles prop from the react-select docs.  This package offers an identical API for the chakraStyles prop, however,  the provided and output style objects use Chakra's sx prop  instead of the default emotion styles the original package offers.  This allows you to both use the shorthand styling props you'd normally use  to style Chakra components, as well as tokens from your theme such as named colors.  All of the style keys offered in the original package can be used in the chakraStyles prop  except for menuPortal. Along with some other caveats, this is explained below.  Most of the components rendered by this package use the basic Chakra <Box /> component with a few exceptions.  Here are the style keys offered and the corresponding Chakra component that is rendered:  - clearIndicator - Box (uses theme styles for Chakra's CloseButton)  - container - Box  - control - Box (uses theme styles for Chakra's Input)  - dropdownIndicator - Box (uses theme styles for Chrakra's InputRightAddon)  - downChevron - Icon  - crossIcon - Icon  - group - Box  - groupHeading - Box (uses theme styles for Chakra's Menu group title)  - indicatorsContainer - Box  - indicatorSeparator - Divider  - input - chakra.input (wrapped in a Box)  - inputContainer - Box  - loadingIndicator - Spinner  - loadingMessage - Box  - menu - Box  - menuList - Box (uses theme styles for Chakra's Menu)  - multiValue - chakra.span (uses theme styles for Chakra's Tag)  - multiValueLabel - chakra.span (uses theme styles for Chakra's TagLabel)  - multiValueRemove - Box (uses theme styles for Chakra's TagCloseButton)  - noOptionsMessage - Box  - option - Box (uses theme styles for Chakra's MenuItem)  - placeholder - Box  - singleValue - Box  - valueContainer - Box
            close_menu_on_select: Close the select menu when the user selects an option
            close_menu_on_scroll: If true, close the select menu when the user scrolls the document/body.
            color_scheme: [chakra]  The visual color appearance of the component  options: "whiteAlpha" | "blackAlpha" | "gray" | "red" |   "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" |   "purple" | "pink" | "linkedin" | "facebook" | "messenger" |   "whatsapp" | "twitter" | "telegram"  default: "gray"
            components: This complex object includes all the compositional components  that are used in react-select. If you wish to overwrite a component,  pass in an object with the appropriate namespace.  If you only wish to restyle a component,  we recommend using the styles prop instead.
            control_should_render_value: Whether the value of the select, e.g. SingleValue,  should be displayed in the control.
            delimiter: Delimiter used to join multiple values into a single HTML Input value
            error_border_color: [chakra]  Colors the component border with the given chakra color string on error state  default: "red.500"
            escape_clears_value: Clear all values when the user presses escape AND the menu is closed
            focus_border_color: [chakra]  Colors the component border with the given chakra color string on focus  default: "blue.500"
            form: Sets the form attribute on the input
            hide_selected_options: Hide the selected option from the menu
            input_value: The id to set on the SelectContainer component.  id: Var[str]  The value of the search input
            input_id: The id of the search input
            is_clearable: Is the select value clearable
            is_disabled: Is the select disabled
            is_invalid: [chakra]  Style component in the chakra invalid style  default: False
            is_multi: Support multiple selected options
            is_read_only: [chakra]  Style component as disabled (chakra style)  default: False
            is_rtl: Is the select direction right-to-left
            is_searchable: Whether to enable search functionality
            min_menu_height: Minimum height of the menu before flipping
            max_menu_height: Maximum height of the menu before scrolling
            menu_placement: Default placement of the menu in relation to the control.  'auto' will flip when there isn't enough space below the control.  options: "bottom" | "auto" | "top"
            menu_position: How the options should be displayed in the menu.
            menu_should_block_scroll: Whether to block scroll events when the menu is open
            menu_should_scroll_into_view: Whether the menu should be scrolled into view when it opens
            name: Name of the HTML Input (optional - without this, no input will be rendered)
            open_menu_on_focus: Allows control of whether the menu is opened when the Select is focused
            open_menu_on_click: Allows control of whether the menu is opened when the Select is clicked
            options: Array of options that populate the select menu
            page_size: Number of options to jump in menu when page{up|down} keys are used
            placeholder: Placeholder for the select value
            required: Marks the value-holding input as required for form validation
            selected_option_color_scheme: [chakra]  If you choose to stick with the default selectedOptionStyle="color",  you have one additional styling option.  If you do not like the default of blue for the highlight color,  you can pass the selectedOptionColorScheme prop to change it.  This prop will accept any named color from your theme's color palette,  and it will use the 500 value in light mode or the 300 value in dark mode.  This prop can only be used for named colors from your theme, not arbitrary hex/rgb colors.  If you would like to use a specific color for the background that's not a part of your theme,  use the chakraStyles prop to customize it.  default: "blue"
            selected_option_style: [chakra]  The default option "color" will style a selected option  similar to how react-select does it,  by highlighting the selected option in the color blue.  Alternatively, if you pass "check" for the value,  the selected option will be styled like the Chakra UI Menu component  and include a check icon next to the selected option(s).  If is_multi and selected_option_style="check" are passed,  space will only be added for the check marks  if hide_selected_options=False is also passed.  options: "color" | "check"  default: "color"
            size: [chakra]  The size of the component.  options: "sm" | "md" | "lg"  default: "md"
            tab_index: Sets the tabIndex attribute on the input
            tab_selects_value: Select the currently focused option when the user presses tab
            tag_variant: [chakra]  Variant of multi-select tags  options: "subtle" | "solid" | "outline"  default: "subtle"
            unstyled: Remove all non-essential styles
            use_basic_style: [chakra]  If this prop is passed,  the dropdown indicator at the right of the component will be styled  in the same way the original Chakra Select component is styled,  instead of being styled as an InputRightAddon.  The original purpose of styling it as an addon  was to create a visual separation between the dropdown indicator  and the button for clearing the selected options.  However, as this button only appears when isMulti is passed,  using this style could make more sense for a single select.  default: False
            variant: [chakra]  The variant of the Select. If no variant is passed,  it will default to defaultProps.variant from the theme for Chakra's Input component.  If your component theme for Input is not modified, it will be outline.  options: "outline" | "filled" | "flushed" | "unstyled"  default: "outline"
            style: The style of the component.
            key: A unique key for the component.
            id: The id for the component.
            class_name: The class name for the component.
            autofocus: Whether the component should take the focus once the page is loaded
            custom_attrs: custom attribute
            **props: Additional properties to be passed to the Select component.

        Returns:
            The `create` method is returning an instance of the `Select` class.
        """
        ...
