diff --git a/.prettierrc.json b/.prettierrc.json index 72f7c036..750b1644 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,5 +1,6 @@ { "printWidth": 80, "singleQuote": true, - "trailingComma": "all" + "trailingComma": "all", + "arrowParens": "always" } diff --git a/docker-compose.yml b/docker-compose.yml index d7ee3b9b..02aadaa4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,6 +39,8 @@ services: dockerfile: ./docker/backend/Dockerfile target: base command: yarn backend:dev + ports: + - 4000:4000 volumes: - ./packages/@types:/usr/src/app/packages/@types - ./packages/backend:/usr/src/app/packages/backend diff --git a/package.json b/package.json index 8168ab71..71b5fa00 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "@types/node": "^14.6.4", "@types/react": "^16.9.43", "@types/react-dom": "^16.9.8", + "@types/react-select": "^3.0.20", "@typescript-eslint/eslint-plugin": "3.9.1", "@typescript-eslint/parser": "3.6.0", "eslint": "6.8.0", diff --git a/packages/design-system/package.json b/packages/design-system/package.json index ade5893a..3aab81a2 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -25,8 +25,9 @@ }, "dependencies": { "@chakra-ui/core": "next", + "@chakra-ui/icons": "next", "@chakra-ui/theme": "next", - "@chakra-ui/icons": "next" + "react-select": "^3.1.0" }, "devDependencies": { "@babel/core": "^7.10.5", diff --git a/packages/design-system/src/SelectSearch.tsx b/packages/design-system/src/SelectSearch.tsx new file mode 100644 index 00000000..0f90fd3f --- /dev/null +++ b/packages/design-system/src/SelectSearch.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import Select, { Props as SelectProps, Styles } from 'react-select'; + +import { theme } from './theme'; + +const selectStyles: Styles = { + menu: (styles) => ({ + ...styles, + background: theme.colors.purple[400], + }), + noOptionsMessage: (styles) => ({ + ...styles, + color: theme.colors.white, + }), + input: (styles) => ({ + ...styles, + color: theme.colors.white, + }), + groupHeading: (styles) => ({ + ...styles, + color: theme.colors.white, + }), + option: (styles) => ({ + ...styles, + background: theme.colors.dark, + ':hover': { + backgroundColor: theme.colors.purpleTag, + color: theme.colors.white, + }, + }), + control: (styles) => ({ + ...styles, + background: theme.colors.dark, + border: theme.colors.dark, + }), + multiValue: (styles) => ({ + ...styles, + background: theme.colors.purpleTag, + color: theme.colors.white, + }), + multiValueLabel: (styles) => ({ + ...styles, + background: theme.colors.purpleTag, + color: theme.colors.white, + }), + multiValueRemove: (styles) => ({ + ...styles, + color: theme.colors.white, + cursor: 'pointer', + ':hover': { + color: theme.colors.blueLight, + }, + }), + clearIndicator: (styles) => ({ + ...styles, + color: theme.colors.white, + cursor: 'pointer', + ':hover': { + color: theme.colors.blueLight, + }, + }), + dropdownIndicator: (styles) => ({ + ...styles, + color: theme.colors.white, + cursor: 'pointer', + ':hover': { + color: theme.colors.blueLight, + }, + }), +}; +export const SelectSearch: React.FC = (props) => ( +