import { createContext, useContext, useMemo } from 'react'; import ReactSelect from 'react-select'; import { Box, useDisclosure } from '@chakra-ui/react'; import { useColorMode } from '~/context'; import { useRSTheme, useMenuStyle, useMenuPortal, useOptionStyle, useControlStyle, useMenuListStyle, useMultiValueStyle, usePlaceholderStyle, useSingleValueStyle, useMultiValueLabelStyle, useMultiValueRemoveStyle, useIndicatorSeparatorStyle, } from './styles'; import type { TSelectOption } from '~/types'; import type { TSelectBase, TSelectContext, TBoxAsReactSelect } from './types'; const SelectContext = createContext(Object()); export const useSelectContext = () => useContext(SelectContext); const ReactSelectAsBox = (props: TBoxAsReactSelect) => ; export const Select = (props: TSelectBase) => { const { ctl, options, multi, onSelect, isError = false, ...rest } = props; const { isOpen, onOpen, onClose } = useDisclosure(); const { colorMode } = useColorMode(); const selectContext = useMemo(() => ({ colorMode, isOpen, isError }), [ colorMode, isError, isOpen, ]); const handleChange = (changed: TSelectOption | TSelectOption[]) => { if (!Array.isArray(changed)) { changed = [changed]; } if (typeof onSelect === 'function') { onSelect(changed); } }; const multiValue = useMultiValueStyle({ colorMode }); const multiValueLabel = useMultiValueLabelStyle({ colorMode }); const multiValueRemove = useMultiValueRemoveStyle({ colorMode }); const menuPortal = useMenuPortal({ colorMode }); const rsTheme = useRSTheme({ colorMode }); return ( ); };