import * as React from 'react'; import { Text, useColorMode, useTheme } from '@chakra-ui/core'; import Select from 'react-select'; import { opposingColor } from 'app/util'; export 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.blackFaded[800], light: theme.colors.whiteFaded[50], }; const menuColor = { dark: theme.colors.white, light: theme.colors.blackAlpha[800], }; const scrollbar = { dark: theme.colors.whiteAlpha[300], light: theme.colors.blackAlpha[300], }; const scrollbarHover = { dark: theme.colors.whiteAlpha[400], light: theme.colors.blackAlpha[400], }; const scrollbarBg = { dark: theme.colors.whiteAlpha[50], light: theme.colors.blackAlpha[50], }; return ( ); }, );