import React from "react"; import { Text, useColorMode, useTheme } from "@chakra-ui/core"; import Select from "react-select"; import { opposingColor } from "~/util"; const ChakraSelect = React.forwardRef( ( { placeholder = "Select...", isFullWidth, size, children, ...props }, ref ) => { const theme = useTheme(); const { colorMode } = useColorMode(); const sizeMap = { lg: { height: theme.space[12] }, md: { height: theme.space[10] }, sm: { height: theme.space[8] } }; const colorSetPrimaryBg = { dark: theme.colors.primary[300], light: theme.colors.primary[500] }; const colorSetPrimaryColor = opposingColor( theme, colorSetPrimaryBg[colorMode] ); const bg = { dark: theme.colors.whiteAlpha[100], light: theme.colors.white }; const color = { dark: theme.colors.whiteAlpha[800], light: theme.colors.black }; const borderFocused = theme.colors.secondary[500]; const borderDisabled = theme.colors.whiteAlpha[100]; const border = { dark: theme.colors.whiteAlpha[50], light: theme.colors.gray[100] }; const borderRadius = theme.space[1]; const hoverColor = { dark: theme.colors.whiteAlpha[200], light: theme.colors.gray[300] }; const { height } = sizeMap[size]; const optionBgActive = { dark: theme.colors.primary[400], light: theme.colors.primary[600] }; const optionBgColor = opposingColor(theme, optionBgActive[colorMode]); const optionSelectedBg = { dark: theme.colors.whiteAlpha[400], light: theme.colors.blackAlpha[400] }; const optionSelectedColor = opposingColor( theme, optionSelectedBg[colorMode] ); const selectedDisabled = theme.colors.whiteAlpha[400]; const placeholderColor = { dark: theme.colors.whiteAlpha[700], light: theme.colors.gray[600] }; const menuBg = { dark: theme.colors.black, light: theme.colors.white }; const menuColor = { dark: theme.colors.white, light: theme.colors.blackAlpha[800] }; return ( ); } ); ChakraSelect.displayName = "ChakraSelect"; export default ChakraSelect;