diff --git a/.env.local b/.env.local index 8ca3788..9e76e81 100644 --- a/.env.local +++ b/.env.local @@ -1,3 +1,4 @@ CI=false # Needed to skip warnings from jest@beta in package.json SKIP_PREFLIGHT_CHECK=true + diff --git a/.eslintrc.js b/.eslintrc.js index 7396b65..f5adc80 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -66,5 +66,8 @@ module.exports = { 'import/no-dynamic-require': 0 } } - ] + ], + globals: { + "fetch": false + } } diff --git a/.gitignore b/.gitignore index 29ffa31..ea39237 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ **/*.log .DS_Store **/.DS_Store - +.idea +*.iml # Dependencies **/node_modules diff --git a/README.md b/README.md index ea9c4db..ccb06ec 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ -# myProject +# GiveMe.lk (alias e-pola) + +GiveMe.lk is a tool for connecting people with essential requirements during the social distancing peroid because the SARS-CoV-2 virus started to spread worldwide. + +There are two main aspects of this tool + +- Let people in isolation request items they need +- Let suppliers who are working to supply essentials see requirement quantity geographically [![Build Status][build-status-image]][build-status-url] [![Code Coverage][coverage-image]][coverage-url] @@ -8,12 +15,11 @@ ## Table of Contents -1. [Features](#features) 1. [Requirements](#requirements) 1. [Getting Started](#getting-started) 1. [Application Structure](#application-structure) 1. [Development](#development) - 1. [Routing](#routing) + 1. [Routing](#routing) 1. [Testing](#testing) 1. [Configuration](#configuration) 1. [Production](#production) @@ -21,65 +27,52 @@ ## Requirements -* node `^10.15.0` -* npm `^6.0.0` +- node `^10.15.0` +- npm `^6.0.0` ## Getting Started -1. Install app and functions dependencies: `npm i && npm i --prefix functions` +1. Install app and functions dependencies: `yarn` 1. Create `src/config.js` file that looks like so if it does not already exist: - ```js - const firebase = { - // Config from Firebase console - } - - // Overrides for for react-redux-firebase/redux-firestore config - export const reduxFirebase = {} - - export const segmentId = '<- Segment ID ->' - - export const publicVapidKey = '<- publicVapidKey from Firebase console ->' - - export const sentryDsn = '<- DSN From Sentry.io ->' - - export default { - env, - firebase, - reduxFirebase, - sentryDsn, - publicVapidKey, - segmentId - } - ``` -1. Start Development server: `npm start` - -While developing, you will probably rely mostly on `npm start`; however, there are additional scripts at your disposal: - -|`npm run - e-Pola + GIVEME.lk diff --git a/public/manifest.json b/public/manifest.json index 9faf358..4b3a906 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,8 +1,46 @@ { - "short_name": "e-Pola", - "name": "e-Pola", - "start_url": "/login/", - "background_color": "#2196f3", - "theme_color": "#2196f3", - "display": "standalone" + "short_name": "GiveMe.lk", + "name": "GiveMe.LK", + "start_url": "/", + "background_color": "#fff", + "theme_color": "#fff", + "display": "standalone", + "icons": [ + { + "src": "/android-icon-36x36.png", + "sizes": "36x36", + "type": "image/png", + "density": "0.75" + }, + { + "src": "/android-icon-48x48.png", + "sizes": "48x48", + "type": "image/png", + "density": "1.0" + }, + { + "src": "/android-icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "density": "1.5" + }, + { + "src": "/android-icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "density": "2.0" + }, + { + "src": "/android-icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "density": "3.0" + }, + { + "src": "/android-icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "density": "4.0" + } + ] } diff --git a/public/ms-icon-144x144.png b/public/ms-icon-144x144.png new file mode 100644 index 0000000..1b0c49c Binary files /dev/null and b/public/ms-icon-144x144.png differ diff --git a/public/ms-icon-150x150.png b/public/ms-icon-150x150.png new file mode 100644 index 0000000..c401e6a Binary files /dev/null and b/public/ms-icon-150x150.png differ diff --git a/public/ms-icon-310x310.png b/public/ms-icon-310x310.png new file mode 100644 index 0000000..f34a988 Binary files /dev/null and b/public/ms-icon-310x310.png differ diff --git a/public/ms-icon-70x70.png b/public/ms-icon-70x70.png new file mode 100644 index 0000000..4779bec Binary files /dev/null and b/public/ms-icon-70x70.png differ diff --git a/src/constants/paths.js b/src/constants/paths.js index db1e82e..e772734 100644 --- a/src/constants/paths.js +++ b/src/constants/paths.js @@ -2,3 +2,4 @@ export const NEEDS_PATH = '/needs' export const ACCOUNT_PATH = '/account' export const LOGIN_PATH = '/login' export const SIGNUP_PATH = '/signup' +export const ABOUT_PATH = '/about' diff --git a/src/containers/Navbar/AccountMenu.js b/src/containers/Navbar/AccountMenu.js index 3188abe..ead425d 100644 --- a/src/containers/Navbar/AccountMenu.js +++ b/src/containers/Navbar/AccountMenu.js @@ -3,14 +3,35 @@ import { useFirebase } from 'react-redux-firebase' import { useHistory } from 'react-router-dom' import Menu from '@material-ui/core/Menu' import MenuItem from '@material-ui/core/MenuItem' -import IconButton from '@material-ui/core/IconButton' +import Button from '@material-ui/core/Button' import AccountCircle from '@material-ui/icons/AccountCircle' import { makeStyles } from '@material-ui/core/styles' -import { ACCOUNT_PATH } from 'constants/paths' +import { ACCOUNT_PATH, NEEDS_PATH, ABOUT_PATH } from 'constants/paths' +import AssignmentIcon from '@material-ui/icons/Assignment' +import EmojiObjectsIcon from '@material-ui/icons/EmojiObjects' +import { Trans } from 'react-i18next' -const useStyles = makeStyles(() => ({ - buttonRoot: { - color: 'white' +const useStyles = makeStyles((theme) => ({ + button: { + textTransform: 'none', + marginLeft: '10px', + [theme.breakpoints.down(600)]: { + display: 'none' + }, + [theme.breakpoints.up(600)]: { + display: 'inline-flex' + } + }, + icon: { + marginLeft: '5px' + }, + buttonCollapse: { + [theme.breakpoints.down(600)]: { + display: 'inline-flex' + }, + [theme.breakpoints.up(600)]: { + display: 'none' + } } })) @@ -35,16 +56,66 @@ function AccountMenu() { closeAccountMenu() history.push(ACCOUNT_PATH) } + function gotoNeeds() { + history.push(NEEDS_PATH) + } + function gotoAbout() { + history.push(ABOUT_PATH) + } return ( <> - - - +
+ + + +
+ +
+ + + +
+ - Account - Sign Out + + Account Settings + + + Sign Out + ) diff --git a/src/containers/Navbar/Navbar.js b/src/containers/Navbar/Navbar.js index 8494702..342eaed 100644 --- a/src/containers/Navbar/Navbar.js +++ b/src/containers/Navbar/Navbar.js @@ -4,10 +4,11 @@ import Button from '@material-ui/core/Button' import { makeStyles } from '@material-ui/core/styles' import { useSelector } from 'react-redux' import { isLoaded, isEmpty } from 'react-redux-firebase' -import { NEEDS_PATH, LOGIN_PATH } from 'constants/paths' +import { LOGIN_PATH } from 'constants/paths' import AccountMenu from './AccountMenu' import NavbarWithoutAuth from './NavbarWithoutAuth' import styles from './Navbar.styles' +import { Trans } from 'react-i18next' const useStyles = makeStyles(styles) @@ -19,7 +20,7 @@ function Navbar() { const authExists = isLoaded(auth) && !isEmpty(auth) return ( - + {authExists ? ( ) : ( @@ -27,8 +28,9 @@ function Navbar() { className={classes.signIn} component={Link} to={LOGIN_PATH} + color="secondary" data-test="sign-in"> - Sign In + Sign In )} diff --git a/src/containers/Navbar/Navbar.styles.js b/src/containers/Navbar/Navbar.styles.js index 0ece987..5869456 100644 --- a/src/containers/Navbar/Navbar.styles.js +++ b/src/containers/Navbar/Navbar.styles.js @@ -4,10 +4,17 @@ export default () => ({ }, appBar: { // backgroundColor: theme.palette.primary1Color // Update this to change navbar color + backgroundColor: 'white', + color: 'secondary', + boxShadow: 'none' }, signIn: { - color: 'white', + color: 'secondary', textDecoration: 'none', alignSelf: 'center' + }, + brandLogo: { + marginRight: '1em', + width: '140px' } }) diff --git a/src/containers/Navbar/NavbarWithoutAuth.js b/src/containers/Navbar/NavbarWithoutAuth.js index 5bde580..d00684f 100644 --- a/src/containers/Navbar/NavbarWithoutAuth.js +++ b/src/containers/Navbar/NavbarWithoutAuth.js @@ -3,28 +3,46 @@ import PropTypes from 'prop-types' import { Link } from 'react-router-dom' import AppBar from '@material-ui/core/AppBar' import Toolbar from '@material-ui/core/Toolbar' -import Typography from '@material-ui/core/Typography' import { makeStyles } from '@material-ui/core/styles' import styles from './Navbar.styles' +import { Avatar } from '@material-ui/core' +import logo from './logo.png' +import ButtonGroup from '@material-ui/core/ButtonGroup' +import Button from '@material-ui/core/Button' const useStyles = makeStyles(styles) +const changeLanguge = (lan) => { + return () => { + // eslint-disable-next-line no-undef + if (localStorage) { + // eslint-disable-next-line no-undef + localStorage.setItem('i18nextLng', lan) + window.location.reload() + } + } +} + function NavbarWithoutAuth({ children, brandPath }) { const classes = useStyles() return ( - - e-Pola - -
+ /> +
+ + + + + +
{children} diff --git a/src/containers/Navbar/logo.png b/src/containers/Navbar/logo.png new file mode 100644 index 0000000..0272e1a Binary files /dev/null and b/src/containers/Navbar/logo.png differ diff --git a/src/containers/Navbar/user.png b/src/containers/Navbar/user.png new file mode 100644 index 0000000..521f965 Binary files /dev/null and b/src/containers/Navbar/user.png differ diff --git a/src/i18n.js b/src/i18n.js new file mode 100644 index 0000000..fe6b57b --- /dev/null +++ b/src/i18n.js @@ -0,0 +1,20 @@ +import i18n from 'i18next' +import { initReactI18next } from 'react-i18next' +import translations from 'lang/translations' +import LanguageDetector from 'i18next-browser-languagedetector' + +i18n + .use(initReactI18next) // passes i18n down to react-i18next + .use(LanguageDetector) // passes i18n down to react-i18next + .init({ + resources: translations, + fallbackLng: 'en', + debug: process.env.NODE_ENV === 'development', + keySeparator: false, // we do not use keys in form messages.welcome + + interpolation: { + escapeValue: false // react already safes from xss + } + }) + +export default i18n diff --git a/src/index.css b/src/index.css index 3d22d27..f931284 100644 --- a/src/index.css +++ b/src/index.css @@ -7,7 +7,7 @@ margin: 0; padding: 0; height: 100%; - background-color: #F2F2F2; + background-color: #fff; font-family: 'Roboto', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; } a { diff --git a/src/index.js b/src/index.js index fead653..61d8f34 100644 --- a/src/index.js +++ b/src/index.js @@ -6,6 +6,7 @@ import { version } from '../package.json' import { env } from './config' import App from './containers/App' import './index.css' +import './i18n' // import * as serviceWorker from './serviceWorker' diff --git a/src/lang/translations.json b/src/lang/translations.json new file mode 100644 index 0000000..5fb216d --- /dev/null +++ b/src/lang/translations.json @@ -0,0 +1,78 @@ +{ + "ta": { + "translation": { + "Worried about basic rations during the curfew?
GIVEME.lk is here to voice your needs.": "ஊரடங்கு உத்தரவின் போது அடிப்படை ரேஷன்களைப் பற்றி கவலைப்படுகிறீர்களா?
உங்கள் தேவைகளுக்கு குரல் கொடுக்க GIVEME.lk இங்கே உள்ளது.", + "Welcome to GIVE<1>ME.lk!": "GIVE<1>ME.lk க்கு வருக!", + "Log-in and start adding your requirements to GiveME. This is how you do that...": "පුරනය වී ඔබගේ අවශ්යතා GiveME වෙත එක් කිරීම ආරම්භ කරන්න. ඔබ එය කරන්නේ එලෙසයි ...", + "Step": "පියවර", + "You log in to GIVE<1>ME.": "ඔබ GIVE<1>ME වෙත පිවිසෙන්න", + "You request items that you need": "ඔබට අවශ්ය අයිතම ඉල්ලා සිටී", + "Authorized vendors see your requirements": "බලයලත් වෙළෙන්දෝ ඔබේ අවශ්යතා දකිති", + "Vendors will come and fulfill your needs.": "විකුණුම්කරුවන් පැමිණ ඔබේ අවශ්යතා සපුරාලනු ඇත.", + "Developed By": "සංවර්ධනය කළේ", + "About": "எங்களை பற்றி", + "My Requests": "எனது கோரிக்கைகள்", + "My Account": "என் கணக்கு", + "Account Settings": "கணக்கு அமைப்புகள்", + "Sign Out": "வெளியேறு" + } + }, + "si": { + "translation": { + "Worried about basic rations during the curfew?
GIVEME.lk is here to voice your needs.": "ඇඳිරි නීතිය අතරේ ආහාර පාන මිලදී ගන්න කරදරද?
ඔබගේ අවශ්‍යතා සපුරාලීමට GIVEME.lk සැදී පැහැදී සිටී.", + "Welcome to GIVE<1>ME.lk!": "GIVE<1>ME.lk වෙත සාදරයෙන් පිළිගනිමු!", + "Log-in and start adding your requirements to GiveME. This is how you do that...": "Login වෙලා ඔබේ අවශ්‍යතා GiveMe.lk ට කියන්න. මෙන්න මෙහෙමයි කරන්නේ...", + "Step": "පියවර", + "You log in to GIVE<1>ME.": "ඔබ GIVE<1>ME වෙත පිවිසෙන්න", + "You request items that you need": "ඔබට අවශ්‍ය භාණ්ඩ තෝරා ගන්න", + "Authorized vendors see your requirements": "වෙළෙන්දන් ඔබේ අවශ්යතා GIVE<1>ME හරහා දැනගන්නවා", + "Vendors will come and fulfill your needs.": "බඩු බෙදාහරින අය පැමිණ ඔබට අදාල දේ ලබා දෙනවා", + "Developed By": "නිර්මාණය කළේ", + "About": "අපි ගැන", + "My Requests": "මගේ ඉල්ලීම්", + "My Account": "මගේ ගිණුම", + "Account Settings": "මගේ විස්තර", + "Sign Out": "Logout වෙන්න", + "Sign In": "Login වෙන්න", + "Hello User": "ආයුබෝවන්", + "Request new item": "භාණ්ඩයක් ඉල්ලන්න", + "Your Needs List": "ඔබේ අවශ්‍යතා ලැයිස්තුව", + "What do you want?": "ඔබට අවශ්‍ය මොනවාද ?", + "Category": "වර්ගය", + "Products": "නිෂ්පාදන", + "How much?": "ප්‍රමාණය", + "Dairy": "කිරි ආහාර", + "Meat, Seafood & Poultry": "මස්, මුහුදු ආහාර සහ කුකුළු මස්", + "Vegetables": "එළවළු", + "Grains": "ධාන්‍ය වර්ග", + "Grocery Items": "සිල්ලර බඩු", + "Pharmacy Items": "ඖෂධ වර්ග", + "Request": "ලැයිස්තුවට දාන්න", + "Requesting...": "ලැයිස්තුගත වේ...", + "Cancel": "අවලංගු කරන්න", + "Display Name": "මගේ නම", + "Contact Number": "සම්බන්ධ කරගත හැකි දුරකථනය", + "Delivery Address": "භාණ්ඩ එවිය යුතු ලිපිනය", + "Your Email": "විද්‍යුත් තැපෑල", + "NIC Number": "හැඳුනුම්පත් අංකය", + "Saving": "වෙනස් වෙමින් පවතී", + "Save": "වෙනස් කරන්න", + "Linked Accounts": "සම්බන්ධිත ගිණුම්", + "Your email here...": "විද්‍යුත් තැපෑල (ඊ මේල් එක) මෙතන ඇතුල් කරන්න", + "Email must be valid": "විද්‍යුත් තැපෑල (ඊ මේල් එක) එක වැරදීද බලන්න. එය නිවැරදි විය යුතුයි", + "Your password here...": "මුරපදය (පාස්වර්ඩ් එක) මෙතන ඇතුල් කරන්න", + "Password is required": "මුරපදයක් (පාස්වර්ඩ් එකක්) අවශ්‍යමයි.", + "Loading": "රැඳී සිටින්න...", + "Login": "Login වෙන්න", + "Not Registered Yet?": "ඔබ අප සමඟ ලියාපදිංච් වෙලා නැද්ද?", + "Sign Up": "ලියාපදිංචි වෙන්න", + "Use your Google Account to Sign In": "ඔබේ Google ගිණුමෙන් GiveMe.lk පාවිච්චි කරන්න හැකියි", + "About GiveME.lk": "GiveME.lk ගැන", + "What is GiveME.lk?": "GiveME.lk යනු කුමක්ද?", + "GiveME.lk is a platform aimed at connecting people with wholesale and retail businesses during the SARS-CoV-2 breakout's social distancing period. Our goal is to tell the sellers where the requirement exists for their produce to make the home delivery more efficient for them and more effective for people who are expecting goods and services.": "GiveME.lk යනු SARS-CoV-2 සමාජ දුරස්ථ කාල පරිච්ඡේදය තුළ තොග හා සිල්ලර ව්‍යාපාර සමඟ පුද්ගලයින් සම්බන්ධ කිරීම අරමුණු කරගත් වේදිකාවකි. අපගේ ඉලක්කය වන්නේ විකුණුම්කරුවන්ට ඔවුන්ගේ නිෂ්පාදන සඳහා අවශ්‍යතාවය පවතින්නේ කොතැනද යන්න කීමෙන් ඔවුන්ට සැපයුම වඩාත් කාර්යක්ෂම කිරීමටයි. භාණ්ඩ හා සේවා අපේක්ෂා කරන පුද්ගලයින් සඳහා මෙමඟින් වඩාත් ඵලදායී සේවාවක් සැපයීමට ඔවුනට හැකිවනු ඇත.", + "This is an idea by the co-founders of Siyomek, Harshadewa Ariyasinghe and Keshan Sodimana. The project is run as an open-sourced project by CodeLanka. Codelanka is an initiative by GDG Sri Lanka to code things that make sense to the public, irrespective of the existence of a financial gain.": "මෙය Siyomek සම නිර්මාතෘන් වන හර්ෂදේව ආරියසිංහ සහ කේෂන් සෝදිමාන මහත්වරුන්ගේ අදහසකි. මෙම ව්‍යාපෘතිය CodeLanka විසින් විවෘතකේත ව්‍යාපෘතියක් ලෙස ක්‍රියාත්මක වේ. CodeLanka යනු මූල්‍යමය වාසියක් නොතකා මහජනයාට අර්ථවත් වන දේ කේත කිරීමට GDG SriLanka වීසින් ගත් මුලපිරීමකි.", + "Who is involved?": "සම්බන්ධ වන්නේ කවුද?", + "If the marker on the map is wrong, please drag the map to the correct location and press Save": "සිතියමේ පෙන්වන ස්ථානය වැරදි නම් සිතියම එහා මෙහා කර නිවැරදි තැනට ගන්න. ඉන්පසු වෙනස් කරන බොත්තම ඔබන්න" + } + } +} diff --git a/src/routes/About/components/AboutPage.js b/src/routes/About/components/AboutPage.js new file mode 100644 index 0000000..b4c0c3e --- /dev/null +++ b/src/routes/About/components/AboutPage.js @@ -0,0 +1,138 @@ +import React from 'react' +import { makeStyles } from '@material-ui/core/styles' +import Typography from '@material-ui/core/Typography' +import Grid from '@material-ui/core/Grid' +import styles from './AboutPage.styles' +import Image from 'material-ui-image' +import Button from '@material-ui/core/Button' + +const useStyles = makeStyles(styles) + +function About() { + const classes = useStyles() + + return ( +
+
+ + About GiveME.lk + +
+ + + + + By{' '} + + CodeLanka + + + + + + What is GiveME.lk? + + + GiveME.lk is a platform + aimed at connecting people with wholesale and retail businesses + during the SARS-CoV-2 breakout's social distancing period. +
+ Our goal is to tell the sellers where the requirement exists for + their produce to make the home delivery more efficient for them and + more effective for people who are expecting goods and services. +
+
+ + + + Who is involved? + + + This is an idea by the co-founders of{' '} + + Siyomek + + , Harshadewa Ariyasinghe and Keshan Sodimana.
+ The project is run as an open-sourced{' '} + + project + +  by CodeLanka. Codelanka is an initiative by GDG Sri Lanka to + code things that make sense to the public, irrespective of the + existence of a financial gain. +
+
+ +
+
+
+
+ + Attributions + +
+
+
+ + + FlatIcon + + + Icons made by{' '} + + Freepik{' '} + + from{' '} + + www.flaticon.com + + +
+
+
+ ) +} + +export default About diff --git a/src/routes/About/components/AboutPage.styles.js b/src/routes/About/components/AboutPage.styles.js new file mode 100644 index 0000000..8cf275e --- /dev/null +++ b/src/routes/About/components/AboutPage.styles.js @@ -0,0 +1,61 @@ +import amber from '@material-ui/core/colors/amber' +export default (theme) => ({ + root: { + ...theme.flexColumnCenter, + flexGrow: 1 + }, + section: { + ...theme.flexColumnCenter, + padding: theme.spacing(2) + }, + mainContainer: { + padding: '2.5em' + }, + leftSide: { + justifyContent: 'center', + textAlign: 'center', + display: 'flex', + flexDirection: 'column' + }, + rightSide: { + textAlign: 'center' + }, + strong: { + color: amber[300] + }, + aboutTitle: { + fontWeight: 'bold' + }, + welcome: { + textAlign: 'center', + marginTop: '2rem' + }, + aboutText: { + marginTop: '1rem', + textAlign: 'justify' + }, + infoButton: { + color: 'black', + backgroundColor: amber[300] + }, + btnDiv: { + textAlign: 'left', + marginTop: '1rem' + }, + linkPrimary: { + color: '#363636' + }, + linkSecondary: { + color: '#6ce97d' + }, + partners: { + ...theme.flexRowCenter, + flex: 1, + marginTop: '2rem' + }, + partnerBlock: { + ...theme.flexColumnCenter, + textAlign: 'center', + marginRight: '1rem' + } +}) diff --git a/src/routes/About/components/index.js b/src/routes/About/components/index.js new file mode 100644 index 0000000..88b7afa --- /dev/null +++ b/src/routes/About/components/index.js @@ -0,0 +1,3 @@ +import AboutPage from './AboutPage' + +export default AboutPage diff --git a/src/routes/About/index.js b/src/routes/About/index.js new file mode 100644 index 0000000..53473dd --- /dev/null +++ b/src/routes/About/index.js @@ -0,0 +1,8 @@ +import AboutPage from './components/AboutPage' +import { ABOUT_PATH } from 'constants/paths' + +// Sync route definition +export default { + path: ABOUT_PATH, + component: AboutPage +} diff --git a/src/routes/Account/components/AccountEditor/AccountEditor.js b/src/routes/Account/components/AccountEditor/AccountEditor.js index 5f22ff6..9e61e51 100644 --- a/src/routes/Account/components/AccountEditor/AccountEditor.js +++ b/src/routes/Account/components/AccountEditor/AccountEditor.js @@ -8,6 +8,8 @@ import { useNotifications } from 'modules/notification' import defaultUserImageUrl from 'static/User.png' import AccountForm from '../AccountForm' import styles from './AccountEditor.styles' +import { Avatar, Typography } from '@material-ui/core' +import ProviderDataForm from '../ProviderDataForm' const useStyles = makeStyles(styles) @@ -37,11 +39,19 @@ function AccountEditor() { return ( - DP image +
+ + Linked Accounts + + {!!profile && !!profile.providerData && ( + + )} +
diff --git a/src/routes/Account/components/AccountEditor/AccountEditor.styles.js b/src/routes/Account/components/AccountEditor/AccountEditor.styles.js index 1b945f0..7705e48 100644 --- a/src/routes/Account/components/AccountEditor/AccountEditor.styles.js +++ b/src/routes/Account/components/AccountEditor/AccountEditor.styles.js @@ -1,13 +1,29 @@ export default (theme) => ({ avatarCurrent: { - width: '100%', + width: '50%', maxWidth: '13rem', - marginTop: '3rem', height: 'auto', cursor: 'pointer' }, gridItem: { textAlign: 'center', - marginTop: theme.spacing(5) + display: 'flex', + flexDirection: 'column', + // marginTop: theme.spacing(5), + justify: 'center', + alignItems: 'center' + }, + linkedAccounts: { + marginTop: '2rem', + justifyContent: 'center', + alignContent: 'center' + }, + userName: { + fontSize: '15px' + }, + linkedItem: { + flexDirection: 'row', + display: 'flex', + justifyContent: 'center' } }) diff --git a/src/routes/Account/components/AccountForm/AccountForm.js b/src/routes/Account/components/AccountForm/AccountForm.js index 98e42b5..80c7498 100644 --- a/src/routes/Account/components/AccountForm/AccountForm.js +++ b/src/routes/Account/components/AccountForm/AccountForm.js @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useState } from 'react' import PropTypes from 'prop-types' import { useForm } from 'react-hook-form' import TextField from '@material-ui/core/TextField' @@ -6,8 +6,20 @@ import Typography from '@material-ui/core/Typography' import { makeStyles } from '@material-ui/core/styles' import Button from '@material-ui/core/Button' import { validateEmail } from 'utils/form' -import ProviderDataForm from '../ProviderDataForm' import styles from './AccountForm.styles' +import InputAdornment from '@material-ui/core/InputAdornment' +import PermIdentityIcon from '@material-ui/icons/PermIdentity' +import MailOutlineIcon from '@material-ui/icons/MailOutline' +import PhoneIcon from '@material-ui/icons/Phone' +import LocationOnIcon from '@material-ui/icons/LocationOn' +import AddLocationIcon from '@material-ui/icons/AddLocation' +import FingerprintIcon from '@material-ui/icons/Fingerprint' +import RoomIcon from '@material-ui/icons/Room' +import CircularProgress from '@material-ui/core/CircularProgress' +import { Trans } from 'react-i18next' +import debounce from 'lodash.debounce' +import GoogleMapReact from 'google-map-react' +import { useNotifications } from 'modules/notification' const useStyles = makeStyles(styles) @@ -17,56 +29,206 @@ function AccountForm({ account, onSubmit }) { register, handleSubmit, errors, - formState: { isSubmitting, isValid } + formState: { isSubmitting, isValid }, + getValues } = useForm({ mode: 'onChange', nativeValidation: false, defaultValues: account }) + const { showSuccess, showError } = useNotifications() + // location to be used in the google map canvas + const [location, changeLocation] = useState(account.location) + const [newLocation, changeNewLocation] = useState({ ...account.location }) + const [isLocationUpdating, setLocationUpdating] = useState(false) + const [zoomLevel, changeZoom] = useState(location != null ? 14 : 6) + const [isAddressFetching, setAddressFetching] = useState(false) + /** + * this calls keshan's backend and gets the location's lat lon information + * @param address + * @returns {*} + */ + function fetchDataFromGooglePlaces(address) { + // let {data, error} = useSwr('https://api-aw4mzcvpla-uc.a.run.app/api/v1/location?address='+ address, { fetcher }) + setAddressFetching(true) + setLocationUpdating(false) + fetch('http://localhost:5000/api/v1/location?address=' + address) + .then((response) => response.json()) + .then((data) => { + if (data.candidates.length > 0) { + const fetchedLocation = data.candidates[0].geometry.location + changeLocation(fetchedLocation) + account.location = fetchedLocation + changeZoom(14) + showSuccess('New location shown. To save it, press Save') + } + setAddressFetching(false) + }) + .catch(() => { + showError('We could not find the location of that address') + setAddressFetching(false) + }) + } + + /** + * appends the location to the submitting data. Location is not in the form items + * @param data + */ + function submitWithLocation(data) { + if (isLocationUpdating) { + data.location = newLocation + } else { + data.location = location + } + onSubmit(data) + } + return ( -
+
+ + Account Settings + Display Name} + margin="normal" + fullWidth + variant="outlined" + inputRef={register} + InputProps={{ + endAdornment: ( + + + + ) + }} + /> + Contact Number} margin="normal" fullWidth + variant="outlined" + inputRef={register} + InputProps={{ + endAdornment: ( + + + + ) + }} /> NIC Number} + margin="normal" + fullWidth + variant="outlined" + inputRef={register} + InputProps={{ + endAdornment: ( + + + + ) + }} + /> + Delivery Address} + margin="normal" + fullWidth + variant="outlined" + inputRef={register} + onChange={debounce(() => { + // console.log('fetching...') + const currentValues = getValues() + fetchDataFromGooglePlaces(currentValues.address) + }, 1000)} + InputProps={{ + endAdornment: ( + + {isAddressFetching ? : } + + ) + }} + /> + + + If the marker on the map is wrong, please drag the map to the + correct location and press Save + + + + { + setLocationUpdating(true) + + changeNewLocation({ + lat: map.center.lat(), + lng: map.center.lng() + }) + }}> + {location && } + {isLocationUpdating && ( + + New Location + + )} + + + Your Email} type="email" name="email" placeholder="email" margin="normal" fullWidth + variant="outlined" inputRef={register({ required: true, validate: validateEmail })} error={!!errors.email} + errorStyle={{ color: 'red' }} helperText={errors.email && 'Email must be valid'} + InputProps={{ + endAdornment: ( + + + + ) + }} /> -
- {!!account && !!account.providerData && ( -
- Linked Accounts - -
- )} - +
+ +
) } diff --git a/src/routes/Account/components/AccountForm/AccountForm.styles.js b/src/routes/Account/components/AccountForm/AccountForm.styles.js index 35876e6..67a3a9e 100644 --- a/src/routes/Account/components/AccountForm/AccountForm.styles.js +++ b/src/routes/Account/components/AccountForm/AccountForm.styles.js @@ -8,5 +8,16 @@ export default (theme) => ({ fields: { width: '100%', marginBottom: '2rem' + }, + btnSave: { + color: '#363636', + backgroundColor: 'transparent', + borderColor: '#363636' + }, + settingsTitle: { + color: '#363636' + }, + saveDiv: { + textAlign: 'left!important' } }) diff --git a/src/routes/Account/components/AccountPage/AccountPage.js b/src/routes/Account/components/AccountPage/AccountPage.js index 7b19c8c..f9d8d99 100644 --- a/src/routes/Account/components/AccountPage/AccountPage.js +++ b/src/routes/Account/components/AccountPage/AccountPage.js @@ -1,7 +1,6 @@ import React from 'react' import Paper from '@material-ui/core/Paper' import Grid from '@material-ui/core/Grid' -import Typography from '@material-ui/core/Typography' import { makeStyles } from '@material-ui/core/styles' import AccountEditor from '../AccountEditor' import styles from './AccountPage.styles' @@ -13,9 +12,8 @@ function AccountPage() { return ( - + - Account diff --git a/src/routes/Account/components/AccountPage/AccountPage.styles.js b/src/routes/Account/components/AccountPage/AccountPage.styles.js index 2061b64..f2e8162 100644 --- a/src/routes/Account/components/AccountPage/AccountPage.styles.js +++ b/src/routes/Account/components/AccountPage/AccountPage.styles.js @@ -1,3 +1,5 @@ +import amber from '@material-ui/core/colors/amber' + export default (theme) => ({ root: { paddingTop: theme.spacing(3), @@ -11,6 +13,9 @@ export default (theme) => ({ pane: { ...theme.flexColumnCenter, justifyContent: 'space-around', - padding: theme.spacing(6) + padding: theme.spacing(6), + backgroundColor: '#fff', + border: '5px solid', + borderColor: amber[300] } }) diff --git a/src/routes/Account/components/ProviderDataForm/ProviderDataForm.js b/src/routes/Account/components/ProviderDataForm/ProviderDataForm.js index 3e4ef69..7f4c703 100644 --- a/src/routes/Account/components/ProviderDataForm/ProviderDataForm.js +++ b/src/routes/Account/components/ProviderDataForm/ProviderDataForm.js @@ -4,12 +4,11 @@ import List from '@material-ui/core/List' import ListItem from '@material-ui/core/ListItem' import ListItemIcon from '@material-ui/core/ListItemIcon' import ListItemText from '@material-ui/core/ListItemText' -import ListSubheader from '@material-ui/core/ListSubheader' import AccountCircle from '@material-ui/icons/AccountCircle' function ProviderData({ providerData }) { return ( - Accounts}> + {providerData.map((providerAccount) => ( diff --git a/src/routes/Home/components/HomePage/HomePage.js b/src/routes/Home/components/HomePage/HomePage.js index 1839905..84f3dc9 100644 --- a/src/routes/Home/components/HomePage/HomePage.js +++ b/src/routes/Home/components/HomePage/HomePage.js @@ -1,50 +1,195 @@ import React from 'react' -import { Link } from 'react-router-dom' + import { makeStyles } from '@material-ui/core/styles' import Typography from '@material-ui/core/Typography' -import Paper from '@material-ui/core/Paper' import Grid from '@material-ui/core/Grid' -import { ACCOUNT_PATH, NEEDS_PATH } from 'constants/paths' import styles from './HomePage.styles' +import Image from 'material-ui-image' +import Card from '@material-ui/core/Card' +import CardMedia from '@material-ui/core/CardMedia' +import CardContent from '@material-ui/core/CardContent' +import { useSelector } from 'react-redux' +import { + isLoaded, + isEmpty, + useFirestore, + useFirestoreConnect +} from 'react-redux-firebase' +import { Trans } from 'react-i18next' + +import DoneIcon from '@material-ui/icons/Done' -const reactRouterUrl = 'https://github.com/ReactTraining/react-router' +// const reactRouterUrl = 'https://github.com/ReactTraining/react-router' const useStyles = makeStyles(styles) function Home() { const classes = useStyles() + const auth = useSelector(({ firebase }) => firebase.auth) + const authExists = isLoaded(auth) && !isEmpty(auth) + + var authUid = authExists ? auth.uid : '' + useFirestore() + useFirestoreConnect([ + { + collection: 'needs', + where: ['createdBy', '==', authUid] + } + ]) + const needs = useSelector(({ firestore: { ordered } }) => ordered.needs) + const hasUserAddedItems = needs != null && needs.length > 0 + return ( -
- - e-Pola - - - - - - Welcome to the e-Pola! - - - You can Log In and start adding your basic needs in this distressing times. - -
    -
  1. - Log In first -
  2. -
  3. - You can add your needs -
  4. -
  5. - Your needs will be visible to our autorized vendors -
  6. -
  7. - They will come and fulfill your needs -
  8. -
-
+
+ + + + + + Worried about basic rations during the curfew? +
+ GIVEME.lk is here to voice your needs. +
+
+
+ + Developed By: + + + + +
+ + + + Welcome to GIVEME.lk! + + + + + Log-in and start adding your requirements to GiveME. This is how + you do that... + + + + + +
+ + + Step 1 + + {authExists && } + + + + + You log in to GIVE + ME. + + + +
+
+ + + +
+ + + Step 2 + + {hasUserAddedItems && } + + + + You request items that you need + + +
+
+ + + +
+ + + Step 3 + + + Authorized vendors see your requirements + + +
+
+ + + +
+ + + Step 4 + + + Vendors will come and fulfill your needs. + + +
+
- +
) } diff --git a/src/routes/Home/components/HomePage/HomePage.styles.js b/src/routes/Home/components/HomePage/HomePage.styles.js index e70981c..39ff89e 100644 --- a/src/routes/Home/components/HomePage/HomePage.styles.js +++ b/src/routes/Home/components/HomePage/HomePage.styles.js @@ -1,9 +1,54 @@ +import amber from '@material-ui/core/colors/amber' export default (theme) => ({ root: { - ...theme.flexColumnCenter + ...theme.flexColumnCenter, + flexGrow: 1 }, section: { ...theme.flexColumnCenter, - padding: theme.spacing(2), + padding: theme.spacing(2) + }, + mainContainer: { + padding: '2.5em' + }, + leftSide: { + justifyContent: 'center', + textAlign: 'center', + display: 'flex', + flexDirection: 'column' + }, + welcome: { + fontWeight: 'bold' + }, + rightSide: { + textAlign: 'center' + }, + strong: { + color: amber[300] + }, + list: { + textAlign: 'left' + }, + cardRoot: { + ...theme.flexColumnCenter, + flexGrow: 1, + flexDirection: 'row', + marginBottom: '1em', + boxShadow: 'none', + border: '5px solid', + borderColor: amber[300], + borderRadius: '5px' + }, + cover: { + width: '10%', + marginLeft: '20px' + }, + content: { + textAlign: 'left', + marginLeft: '10px' + }, + checkmark: { + marginLeft: '20px', + color: '#4caf50' } }) diff --git a/src/routes/Login/components/LoginForm/LoginForm.js b/src/routes/Login/components/LoginForm/LoginForm.js index 4aab08a..0c6a32d 100644 --- a/src/routes/Login/components/LoginForm/LoginForm.js +++ b/src/routes/Login/components/LoginForm/LoginForm.js @@ -6,6 +6,7 @@ import { makeStyles } from '@material-ui/core/styles' import Button from '@material-ui/core/Button' import { validateEmail } from 'utils/form' import styles from './LoginForm.styles' +import { Trans } from 'react-i18next' const useStyles = makeStyles(styles) @@ -25,8 +26,9 @@ function LoginForm({ onSubmit }) {
Your email here...} margin="normal" fullWidth inputRef={register({ @@ -34,19 +36,20 @@ function LoginForm({ onSubmit }) { validate: validateEmail })} error={!!errors.email} - helperText={errors.email && 'Email must be valid'} + helperText={errors.email && Email must be valid} /> Your password here...} margin="normal" fullWidth inputRef={register({ required: true })} error={!!errors.password} - helperText={errors.password && 'Password is required'} + helperText={errors.password && Password is required} />
diff --git a/src/routes/Login/components/LoginPage/LoginPage.js b/src/routes/Login/components/LoginPage/LoginPage.js index 5e1fd05..6dd5548 100644 --- a/src/routes/Login/components/LoginPage/LoginPage.js +++ b/src/routes/Login/components/LoginPage/LoginPage.js @@ -8,6 +8,9 @@ import { SIGNUP_PATH } from 'constants/paths' import { useNotifications } from 'modules/notification' import LoginForm from '../LoginForm' import styles from './LoginPage.styles' +import Image from 'material-ui-image' +import logo from './logo.png' +import { Trans } from 'react-i18next' const useStyles = makeStyles(styles) @@ -31,20 +34,50 @@ function LoginPage() { } return ( -
- - - -
or
-
- -
-
- Need an account? - - Sign Up - +
+
+ + + +
+ + Not Registered Yet? + + + Sign Up + +
+
+
+ Use your Google Account to Sign In +
+
+ +
+
+
+ {/* */}
) } diff --git a/src/routes/Login/components/LoginPage/LoginPage.styles.js b/src/routes/Login/components/LoginPage/LoginPage.styles.js index d600f39..6a4a2b8 100644 --- a/src/routes/Login/components/LoginPage/LoginPage.styles.js +++ b/src/routes/Login/components/LoginPage/LoginPage.styles.js @@ -1,3 +1,4 @@ +import amber from '@material-ui/core/colors/amber' export default (theme) => ({ root: { ...theme.flexColumnCenter, @@ -5,19 +6,26 @@ export default (theme) => ({ height: '100%', width: '100%', fontWeight: 400, - paddingTop: '1.5rem' + paddingTop: '1.5rem', + backgroundColor: 'white' }, panel: { ...theme.flexColumnCenter, justifyContent: 'center', flexGrow: 1, - padding: '1.25rem', - minWidth: '250px', - minHeight: '270px' + padding: '2rem', + minWidth: '450px', + minHeight: '270px', + border: '5px solid', + boxShadow: 'none', + borderColor: amber[300], + zIndex: 10 }, orLabel: { marginTop: '1rem', - marginBottom: '.5rem' + marginBottom: '.5rem', + fontSize: '13px', + fontWeight: 'bold' }, signup: { ...theme.flexColumnCenter, @@ -29,9 +37,15 @@ export default (theme) => ({ fontWeight: 'bold' }, signupLink: { - fontSize: '1.2rem' + fontSize: '1.2rem', + fontWeight: 'bold', + color: '#363636' }, providers: { marginTop: '1rem' + }, + hr: { + width: '300px', + backhroundColor: 'lightgrey' } }) diff --git a/src/routes/Login/components/LoginPage/logo.png b/src/routes/Login/components/LoginPage/logo.png new file mode 100644 index 0000000..0272e1a Binary files /dev/null and b/src/routes/Login/components/LoginPage/logo.png differ diff --git a/src/routes/Needs/components/NeedTile/NeedTile.js b/src/routes/Needs/components/NeedTile/NeedTile.js index 354dca6..6a84e05 100644 --- a/src/routes/Needs/components/NeedTile/NeedTile.js +++ b/src/routes/Needs/components/NeedTile/NeedTile.js @@ -1,27 +1,27 @@ import React from 'react' import PropTypes from 'prop-types' -import { useHistory } from 'react-router-dom' import { useFirestore } from 'react-redux-firebase' import Paper from '@material-ui/core/Paper' import IconButton from '@material-ui/core/IconButton' import Tooltip from '@material-ui/core/Tooltip' import DeleteIcon from '@material-ui/icons/Delete' import { makeStyles } from '@material-ui/core/styles' -import { NEEDS_PATH } from 'constants/paths' import useNotifications from 'modules/notification/useNotifications' import styles from './NeedTile.styles' +// import { useHistory } from 'react-router-dom' +// import { NEEDS_PATH } from 'constants/paths' const useStyles = makeStyles(styles) function NeedTile({ name, needId, amount, showDelete }) { const classes = useStyles() - const history = useHistory() const firestore = useFirestore() const { showError, showSuccess } = useNotifications() + // const history = useHistory() - function goToNeed() { - return history.push(`${NEEDS_PATH}/${needId}`) - } + // function goToNeed() { + // return history.push(`${NEEDS_PATH}/${needId}`) + // } function deleteNeed() { return firestore @@ -37,9 +37,7 @@ function NeedTile({ name, needId, amount, showDelete }) { return (
- - {name || 'No Name'} - + {name || 'No Name'} {showDelete ? ( @@ -48,9 +46,8 @@ function NeedTile({ name, needId, amount, showDelete }) { ) : null}
- - {amount || ''} - + Qty: + {amount || ''}
) } @@ -59,7 +56,7 @@ NeedTile.propTypes = { needId: PropTypes.string.isRequired, showDelete: PropTypes.bool, name: PropTypes.string, - amount: PropTypes.string, + amount: PropTypes.string } NeedTile.defaultProps = { diff --git a/src/routes/Needs/components/NeedTile/NeedTile.styles.js b/src/routes/Needs/components/NeedTile/NeedTile.styles.js index dd0cf8a..7e23b17 100644 --- a/src/routes/Needs/components/NeedTile/NeedTile.styles.js +++ b/src/routes/Needs/components/NeedTile/NeedTile.styles.js @@ -1,12 +1,14 @@ +import amber from '@material-ui/core/colors/amber' export default (theme) => ({ root: { display: 'flex', flexDirection: 'column', alignItems: 'flex-start', - height: '200px', + height: '150px', width: '300px', margin: theme.spacing(0.5), - padding: theme.spacing(1.3) + padding: theme.spacing(1.3), + backgroundColor: amber[300] }, top: { display: 'flex', @@ -14,13 +16,15 @@ export default (theme) => ({ width: '100%' }, name: { - fontSize: '1.5rem', + marginTop: '1rem', + fontSize: '2.5rem', cursor: 'pointer', textDecoration: 'none', transition: 'all 800ms cubic-bezier(0.25,0.1,0.25,1) 0ms', textOverflow: 'ellipsis', overflow: 'hidden', whiteSpace: 'nowrap', + color: '#363636', '&:hover': { color: '' }, @@ -30,10 +34,14 @@ export default (theme) => ({ }, amount: { fontSize: '1.5rem', - fontColor: '#333', + color: '#363636', textDecoration: 'none', textOverflow: 'ellipsis', overflow: 'hidden', - whiteSpace: 'nowrap', + whiteSpace: 'nowrap' + }, + qty: { + marginTop: '0.5rem', + color: '#363636' } }) diff --git a/src/routes/Needs/components/NeedsHero/NeedsHero.js b/src/routes/Needs/components/NeedsHero/NeedsHero.js new file mode 100644 index 0000000..ee86e3e --- /dev/null +++ b/src/routes/Needs/components/NeedsHero/NeedsHero.js @@ -0,0 +1,30 @@ +import React from 'react' +import PropTypes from 'prop-types' +import Paper from '@material-ui/core/Paper' +import { makeStyles } from '@material-ui/core/styles' +import styles from './NeedsHero.styles' +import { Typography } from '@material-ui/core' +import { Trans } from 'react-i18next' + +const useStyles = makeStyles(styles) + +function NeedsHero({ onClick }) { + const classes = useStyles() + + return ( + + + Hello User! + + + Your Needs List + + + ) +} + +NeedsHero.propTypes = { + onClick: PropTypes.func +} + +export default NeedsHero diff --git a/src/routes/Needs/components/NeedsHero/NeedsHero.styles.js b/src/routes/Needs/components/NeedsHero/NeedsHero.styles.js new file mode 100644 index 0000000..86d6ae3 --- /dev/null +++ b/src/routes/Needs/components/NeedsHero/NeedsHero.styles.js @@ -0,0 +1,12 @@ +export default (theme) => ({ + root: { + display: 'flex', + flexDirection: 'column', + height: '150px', + alignItems: 'flex-start', + padding: theme.spacing(5), + background: 'linear-gradient(to right, #5B86E5, #36D1DC)', + margin: '1rem', + color: 'white' + } +}) diff --git a/src/routes/Needs/components/NeedsHero/index.js b/src/routes/Needs/components/NeedsHero/index.js new file mode 100644 index 0000000..e18a401 --- /dev/null +++ b/src/routes/Needs/components/NeedsHero/index.js @@ -0,0 +1,3 @@ +import NeedsHero from './NeedsHero' + +export default NeedsHero diff --git a/src/routes/Needs/components/NeedsPage/NeedsPage.js b/src/routes/Needs/components/NeedsPage/NeedsPage.js index ea64a19..4758123 100644 --- a/src/routes/Needs/components/NeedsPage/NeedsPage.js +++ b/src/routes/Needs/components/NeedsPage/NeedsPage.js @@ -4,15 +4,27 @@ import { Route, Switch } from 'react-router-dom' import NeedRoute from 'routes/Needs/routes/Need' import { renderChildren } from 'utils/router' import NeedsList from '../NeedsList' +import Image from 'material-ui-image' +import NeedsHero from '../NeedsHero' function NeedsPage({ match }) { return ( - - {/* Child routes */} - {renderChildren([NeedRoute], match)} - {/* Main Route */} - } /> - +
+
+ + +
+ + {/* Child routes */} + {renderChildren([NeedRoute], match)} + {/* Main Route */} + } /> + +
) } diff --git a/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.js b/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.js index 1fea1d4..c723e24 100644 --- a/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.js +++ b/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.js @@ -15,12 +15,13 @@ import MenuItem from '@material-ui/core/MenuItem' import FormControl from '@material-ui/core/FormControl' import { useSelector } from 'react-redux' import { useFirestoreConnect, isEmpty } from 'react-redux-firebase' +import { Trans } from 'react-i18next' const useStyles = makeStyles(styles) function NewNeedDialog({ onSubmit, open, onRequestClose }) { const classes = useStyles() - const [catagory, setCatagory] = React.useState('') + const [category, setCategory] = React.useState('') const [product, setProduct] = React.useState('') const { control, @@ -31,13 +32,13 @@ function NewNeedDialog({ onSubmit, open, onRequestClose }) { useFirestoreConnect({ collection: 'products', - where: ['catagory', '==', catagory] + where: ['category', '==', category] }) const products = useSelector(({ firestore: { ordered } }) => ordered.products) const handleChange = (event) => { - setCatagory(event.target.value) + setCategory(event.target.value) setProduct('') } @@ -55,33 +56,72 @@ function NewNeedDialog({ onSubmit, open, onRequestClose }) { return ( - What you want? + + What do you want? +
- Catagory + + Category +

- Products + + Products +
- How much? + + How much? + @@ -134,13 +176,17 @@ function NewNeedDialog({ onSubmit, open, onRequestClose }) {
diff --git a/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.styles.js b/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.styles.js index f16d7ff..d0cef2f 100644 --- a/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.styles.js +++ b/src/routes/Needs/components/NewNeedDialog/NewNeedDialog.styles.js @@ -1,7 +1,8 @@ export default (theme) => ({ root: { padding: theme.spacing(2), - width: '300px' + width: '500px', + maxWidth: '100%' }, inputs: { ...theme.flexColumnCenter @@ -10,6 +11,9 @@ export default (theme) => ({ width: '100%' }, buttons: { - ...theme.flexColumnCenter, + ...theme.flexColumnCenter + }, + emojis: { + fontSize: '35px' } }) diff --git a/src/routes/Needs/components/NewNeedTile/NewNeedTile.js b/src/routes/Needs/components/NewNeedTile/NewNeedTile.js index 58b8ac8..3c20418 100644 --- a/src/routes/Needs/components/NewNeedTile/NewNeedTile.js +++ b/src/routes/Needs/components/NewNeedTile/NewNeedTile.js @@ -4,6 +4,8 @@ import ContentAddCircle from '@material-ui/icons/AddCircle' import Paper from '@material-ui/core/Paper' import { makeStyles } from '@material-ui/core/styles' import styles from './NewNeedTile.styles' +import { Typography } from '@material-ui/core' +import { Trans } from 'react-i18next' const useStyles = makeStyles(styles) @@ -13,7 +15,9 @@ function NewNeedTile({ onClick }) { return ( - Request new need + + Request new item + ) } diff --git a/src/routes/Needs/components/NewNeedTile/NewNeedTile.styles.js b/src/routes/Needs/components/NewNeedTile/NewNeedTile.styles.js index 89de201..508994c 100644 --- a/src/routes/Needs/components/NewNeedTile/NewNeedTile.styles.js +++ b/src/routes/Needs/components/NewNeedTile/NewNeedTile.styles.js @@ -1,20 +1,24 @@ +import amber from '@material-ui/core/colors/amber' export default (theme) => ({ root: { ...theme.flexRowCenter, alignItems: 'center', cursor: 'pointer', - height: '200px', + height: '150px', width: '300px', margin: theme.spacing(0.5), padding: theme.spacing(1.3), - overflow: 'hidden' + overflow: 'hidden', + backgroundColor: amber[300] }, newIcon: { - width: '6rem', - height: '6rem', + width: '4rem', + height: '4rem', + color: '#363636', transition: 'all 800ms cubic-bezier(0.25,0.1,0.25,1) 0ms', '&:hover': { color: '#757575' - } + }, + marginRight: '0.5rem' } }) diff --git a/src/routes/Needs/routes/Need/components/NeedData/NeedData.js b/src/routes/Needs/routes/Need/components/NeedData/NeedData.js index da99e91..2e1a764 100644 --- a/src/routes/Needs/routes/Need/components/NeedData/NeedData.js +++ b/src/routes/Needs/routes/Need/components/NeedData/NeedData.js @@ -28,9 +28,7 @@ function NeedData() { return ( - - {(need && need.name) || 'Need'} - + {(need && need.name) || 'Need'} {needId}
{JSON.stringify(need, null, 2)}
diff --git a/src/routes/index.js b/src/routes/index.js index bf287a1..4fa404e 100755 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -7,6 +7,7 @@ import SignupRoute from './Signup' import NeedsRoute from './Needs' import AccountRoute from './Account' import NotFoundRoute from './NotFound' +import AboutRoute from './About' export default function createRoutes(store) { return ( @@ -19,7 +20,8 @@ export default function createRoutes(store) { NeedsRoute, NeedsRoute, SignupRoute, - LoginRoute + LoginRoute, + AboutRoute /* Add More Routes Here */ ].map((settings, index) => ( diff --git a/src/static/logo.svg b/src/static/logo.svg index 6b60c10..1ebb866 100644 --- a/src/static/logo.svg +++ b/src/static/logo.svg @@ -1,7 +1,83 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/theme.js b/src/theme.js index ec9d020..483c171 100644 --- a/src/theme.js +++ b/src/theme.js @@ -1,17 +1,27 @@ +import amber from '@material-ui/core/colors/amber' + export default { palette: { primary: { - main: '#2196f3' + main: amber[300] + }, + secondary: { + main: '#363636' } }, // Enable typography v2: https://material-ui.com/style/typography/#migration-to-typography-v2 typography: { - useNextVariants: true + color: '#363636', + backgroundColor: '#363636', + useNextVariants: true, + fontFamily: + 'BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif' }, flexColumnCenter: { display: 'flex', flexDirection: 'column', - alignItems: 'center' + alignItems: 'center', + textAlign: 'center' }, flexRowCenter: { display: 'flex', diff --git a/src/utils/errorHandler.js b/src/utils/errorHandler.js index 3e1ca4f..c29afba 100644 --- a/src/utils/errorHandler.js +++ b/src/utils/errorHandler.js @@ -14,7 +14,7 @@ function initStackdriverErrorReporter() { errorHandler.start({ key: firebase.apiKey, projectId: firebase.projectId, - service: 'myProject-site', + service: 'GiveMe-lk-site', version }) }) diff --git a/yarn.lock b/yarn.lock index a67ec48..975d3ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1496,6 +1496,11 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@mapbox/point-geometry@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" + integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= + "@material-ui/core@^4.9.7": version "4.9.8" resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.9.8.tgz#21c37a9aadf4ff8a2719b8cfcad0ae9e6ca53791" @@ -2192,6 +2197,11 @@ JSONStream@^1.2.1: jsonparse "^1.2.0" through ">=2.2.7 <3" +StringScanner@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/StringScanner/-/StringScanner-0.0.3.tgz#bf06ecfdc90046711f4e6175549243b78ceb38aa" + integrity sha1-vwbs/ckARnEfTmF1VJJDt4zrOKo= + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -2266,6 +2276,11 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" +adm-zip@^0.4.3: + version "0.4.14" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.14.tgz#2cf312bcc9f8875df835b0f6040bd89be0a727a9" + integrity sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g== + agent-base@6: version "6.0.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" @@ -2313,6 +2328,11 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -2642,6 +2662,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + async@^1.3.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -2956,6 +2981,13 @@ bl@^4.0.1: inherits "^2.0.4" readable-stream "^3.4.0" +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + bluebird@3.7.2, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3689,6 +3721,24 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +coffee-script-redux@2.0.0-beta8: + version "2.0.0-beta8" + resolved "https://registry.yarnpkg.com/coffee-script-redux/-/coffee-script-redux-2.0.0-beta8.tgz#0fd7b8417340dd0d339e8f6fd8b4b8716956e8d5" + integrity sha1-D9e4QXNA3Q0zno9v2LS4cWlW6NU= + dependencies: + StringScanner "~0.0.3" + nopt "~2.1.2" + optionalDependencies: + cscodegen "git://github.com/michaelficarra/cscodegen.git#73fd7202ac086c26f18c9d56f025b18b3c6f5383" + escodegen "~0.0.24" + esmangle "~0.0.8" + source-map "0.1.11" + +coffee-script@^1.7.1: + version "1.12.7" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" + integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4049,6 +4099,15 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" +cpr@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/cpr/-/cpr-0.2.0.tgz#3c3c039b1b24b48b74a86f7dfed70a57a4d14582" + integrity sha1-PDwDmxsktIt0qG99/tcKV6TRRYI= + dependencies: + graceful-fs "~1.2.0" + mkdirp "~0.3.4" + rimraf "~2.0.2" + crc32-stream@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" @@ -4180,6 +4239,17 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +"cscodegen@git://github.com/michaelficarra/cscodegen.git#73fd7202ac086c26f18c9d56f025b18b3c6f5383": + version "0.1.0" + resolved "git://github.com/michaelficarra/cscodegen.git#73fd7202ac086c26f18c9d56f025b18b3c6f5383" + +cson-safe@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cson-safe/-/cson-safe-0.1.1.tgz#5c56b8042d94842a93220fa65a7f357fcde0c273" + integrity sha1-XFa4BC2UhCqTIg+mWn81f83gwnM= + dependencies: + coffee-script-redux "2.0.0-beta8" + css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -4557,6 +4627,21 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress@^0.2.3: + version "0.2.5" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-0.2.5.tgz#d213233efe066ccd80d914d793f1b30cd984b847" + integrity sha1-0hMjPv4GbM2A2RTXk/GzDNmEuEc= + dependencies: + adm-zip "^0.4.3" + ext-name "^1.0.0" + get-stdin "^0.1.0" + mkdirp "^0.3.5" + nopt "^2.2.0" + rimraf "^2.2.2" + stream-combiner "^0.0.4" + tar "^0.1.18" + tempfile "^0.1.2" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -4913,7 +4998,7 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= @@ -5172,6 +5257,23 @@ escodegen@^1.11.0, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +"escodegen@~ 0.0.28", escodegen@~0.0.24: + version "0.0.28" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-0.0.28.tgz#0e4ff1715f328775d6cab51ac44a406cd7abffd3" + integrity sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M= + dependencies: + esprima "~1.0.2" + estraverse "~1.3.0" + optionalDependencies: + source-map ">= 0.1.2" + +"escope@~ 1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/escope/-/escope-1.0.3.tgz#759dce8496c4248fec2d0caaf4108bcf3f1a7f5d" + integrity sha1-dZ3OhJbEJI/sLQyq9BCLzz8af10= + dependencies: + estraverse "^2.0.0" + eslint-config-prettier@^6.10.1: version "6.10.1" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" @@ -5456,6 +5558,19 @@ eslint@^6.6.0, eslint@^6.8.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +esmangle@~0.0.8: + version "0.0.17" + resolved "https://registry.yarnpkg.com/esmangle/-/esmangle-0.0.17.tgz#4c5c93607cde5d1276bad396e836229dba68d90c" + integrity sha1-TFyTYHzeXRJ2utOW6DYinbpo2Qw= + dependencies: + escodegen "~ 0.0.28" + escope "~ 1.0.0" + esprima "~ 1.0.2" + esshorten "~ 0.0.2" + estraverse "~ 1.3.2" + optimist "*" + source-map "~ 0.1.8" + espree@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" @@ -5470,6 +5585,11 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +"esprima@~ 1.0.2", esprima@~1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= + esquery@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" @@ -5484,6 +5604,19 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" +"esshorten@~ 0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/esshorten/-/esshorten-0.0.2.tgz#28a652f1efd40c8e227f8c6de7dbe6b560ee8129" + integrity sha1-KKZS8e/UDI4if4xt59vmtWDugSk= + dependencies: + escope "~ 1.0.0" + estraverse "~ 1.2.0" + +estraverse@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-2.0.0.tgz#5ae46963243600206674ccb24a09e16674fcdca1" + integrity sha1-WuRpYyQ2ACBmdMyySgnhZnT83KE= + estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -5494,6 +5627,16 @@ estraverse@^5.0.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== +"estraverse@~ 1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.2.0.tgz#6a3dc8a46a5d6766e5668639fc782976ce5660fd" + integrity sha1-aj3IpGpdZ2blZoY5/Hgpds5WYP0= + +"estraverse@~ 1.3.2", estraverse@~1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.3.2.tgz#37c2b893ef13d723f276d878d60d8535152a6c42" + integrity sha1-N8K4k+8T1yPydth41g2FNRUqbEI= + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -5522,6 +5665,11 @@ eventemitter2@4.1.2: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-4.1.2.tgz#0e1a8477af821a6ef3995b311bf74c23a5247f15" integrity sha1-DhqEd6+CGm7zmVsxG/dMI6UkfxU= +eventemitter3@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= + eventemitter3@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" @@ -5677,6 +5825,21 @@ express@^4.16.4, express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext-list@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-0.2.0.tgz#3614d5f299f4a592a89629e7de825f1774d19abd" + integrity sha1-NhTV8pn0pZKolinn3oJfF3TRmr0= + dependencies: + got "^0.2.0" + +ext-name@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-1.0.1.tgz#18283356dc40a393455c54460f0599ce97d30e0c" + integrity sha1-GCgzVtxAo5NFXFRGDwWZzpfTDgw= + dependencies: + ext-list "^0.2.0" + underscore.string "~2.3.3" + ext@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" @@ -5752,6 +5915,11 @@ eyes@0.1.x: resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= +fast-deep-equal@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" @@ -5844,6 +6012,22 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fetcher@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/fetcher/-/fetcher-0.2.0.tgz#203f9e1c83643f7b2bfb2acf21b7e34df7ba0261" + integrity sha1-ID+eHINkP3sr+yrPIbfjTfe6AmE= + dependencies: + async "^0.9.0" + coffee-script "^1.7.1" + cpr "^0.2.0" + cson-safe "^0.1.1" + decompress "^0.2.3" + mkdirp "^0.5.0" + request "^2.36.0" + rimraf "^2.2.8" + underscore "^1.6.0" + which "^1.0.5" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -6320,6 +6504,16 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" +fstream@~0.1.28: + version "0.1.31" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz#7337f058fbbbbefa8c9f561a28cab0849202c988" + integrity sha1-czfwWPu7vvqMn1YaKMqwhJICyYg= + dependencies: + graceful-fs "~3.0.2" + inherits "~2.0.0" + mkdirp "0.5" + rimraf "2" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -6425,6 +6619,11 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== +get-stdin@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-0.1.0.tgz#5998af24aafc802d15c82c685657eeb8b10d4a91" + integrity sha1-WZivJKr8gC0VyCxoVlfuuLENSpE= + get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -6652,6 +6851,16 @@ google-gax@~1.12.0: semver "^6.0.0" walkdir "^0.4.0" +google-map-react@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/google-map-react/-/google-map-react-1.1.7.tgz#381baa7d16273de0e981cf2b8f996fccef2ab4a4" + integrity sha512-OWwfvVlJG3aQbDZOezWPzT7b8uqk5iMya5yEfBcfGYBFONna5UYCWZl49/cS0j1DPigtwtN0YCzPKjXMQHOUeA== + dependencies: + "@mapbox/point-geometry" "^0.1.0" + eventemitter3 "^1.1.0" + prop-types "^15.5.6" + scriptjs "^2.5.7" + google-p12-pem@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-1.0.4.tgz#b77fb833a2eb9f7f3c689e2e54f095276f777605" @@ -6667,6 +6876,13 @@ google-p12-pem@^2.0.0: dependencies: node-forge "^0.9.0" +got@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/got/-/got-0.2.0.tgz#d00c248b29fdccaea940df9ca0995ebff31b51a5" + integrity sha1-0Awkiyn9zK6pQN+coJlev/MbUaU= + dependencies: + object-assign "^0.3.0" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -6689,6 +6905,23 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@~1.1: + version "1.1.14" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.1.14.tgz#07078db5f6377f6321fceaaedf497de124dc9465" + integrity sha1-BweNtfY3f2Mh/Oqu30l94STclGU= + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q= + +graceful-fs@~3.0.2: + version "3.0.12" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz#0034947ce9ed695ec8ab0b854bc919e82b1ffaef" + integrity sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg== + dependencies: + natives "^1.1.3" + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -6964,6 +7197,13 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" +html-parse-stringify2@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" + integrity sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o= + dependencies: + void-elements "^2.0.1" + html-webpack-plugin@4.0.0-beta.11: version "4.0.0-beta.11" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" @@ -7114,6 +7354,20 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== +i18next-browser-languagedetector@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-4.0.2.tgz#eb02535cc5e57dd534fc60abeede05a3823a8551" + integrity sha512-AK4IZ3XST4HIKShgpB2gOFeDPrMOnZx56GLA6dGo/8rvkiczIlq05lV8w77c3ShEZxtTZeUVRI4Q/cBFFVXS/w== + dependencies: + "@babel/runtime" "^7.5.5" + +i18next@^19.4.1: + version "19.4.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.4.1.tgz#4929d15d3d01e4712350a368d005cefa50ff5455" + integrity sha512-dC3ue15jkLebN2je4xEjfjVYd/fSAo+UVK9f+JxvceCJRowkI+S0lGohgKejqU+FYLfvw9IAPylIIEWwR8Djrg== + dependencies: + "@babel/runtime" "^7.3.1" + iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -8951,6 +9205,11 @@ lodash.clone@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -9255,6 +9514,13 @@ marked@^0.7.0: resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== +material-ui-image@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/material-ui-image/-/material-ui-image-3.2.3.tgz#34b24149a94e1f090c47e210fa8a6a2c815bcb3b" + integrity sha512-dXU9Hj7l0OvmG5s39gwmBuZdYvf5kn17tMMPYg5Hpu4vgnSdfoGkE8kt5J449BWmZZaLMTf5pExcz80Du9dwog== + dependencies: + prop-types "^15.5.8" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -9470,6 +9736,11 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -9545,6 +9816,13 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" +mkdirp@0.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mkdirp@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -9559,6 +9837,11 @@ mkdirp@0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^0.3.5, mkdirp@~0.3.4: + version "0.3.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + integrity sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc= + moment@2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" @@ -9657,6 +9940,11 @@ nash@^3.0.0: lodash "^4.17.5" minimist "^1.1.0" +natives@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" + integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -9815,6 +10103,13 @@ node-releases@^1.1.52: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== +nopt@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz#2aa09b7d1768487b3b89a9c5aa52335bff0baea7" + integrity sha1-KqCbfRdoSHs7ianFqlIzW/8Lrqc= + dependencies: + abbrev "1" + nopt@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" @@ -9823,6 +10118,13 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +nopt@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.1.2.tgz#6cccd977b80132a07731d6e8ce58c2c8303cf9af" + integrity sha1-bMzZd7gBMqB3MdbozljCyDA8+a8= + dependencies: + abbrev "1" + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -9937,6 +10239,11 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +object-assign@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-0.3.1.tgz#060e2a2a27d7c0d77ec77b78f11aa47fd88008d2" + integrity sha1-Bg4qKifXwNd+x3t48Rqkf9iACNI= + object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -10108,6 +10415,14 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" +optimist@*: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + optimize-css-assets-webpack-plugin@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" @@ -11394,7 +11709,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" -prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.0, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -11689,6 +12004,14 @@ react-hook-form@^5.1.3: resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.2.0.tgz#b5b654516ee03d55d78b7b9e194c7f4632885426" integrity sha512-EqGCSl3DxSUBtL/9lFvrFQLJ7ICdVKrfjcMHay2SvmU4trR8aqrd7YuiLSojBKmZBRdBnCcxG+LzLWF9z474NA== +react-i18next@^11.3.4: + version "11.3.4" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.3.4.tgz#355df5fe5133e5e30302d166f529678100ffc968" + integrity sha512-IRZMD7PAM3C+fJNzRbyLNi1ZD0kc3Z3obBspJjEl+9H+ME41PhVor3BpdIqv/Rm7lUoGhMjmpu42J45ooJ61KA== + dependencies: + "@babel/runtime" "^7.3.1" + html-parse-stringify2 "2.0.1" + react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -12151,7 +12474,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.79.0, request@^2.87.0, request@^2.88.0: +request@^2.36.0, request@^2.79.0, request@^2.87.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -12354,7 +12677,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@2, rimraf@^2.2.2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -12375,6 +12698,13 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" +rimraf@~2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.0.3.tgz#f50a2965e7144e9afd998982f15df706730f56a9" + integrity sha1-9QopZecUTpr9mYmC8V33BnMPVqk= + optionalDependencies: + graceful-fs "~1.1" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -12517,6 +12847,11 @@ schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6 ajv "^6.12.0" ajv-keywords "^3.4.1" +scriptjs@^2.5.7: + version "2.5.9" + resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f" + integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -12847,16 +13182,35 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.11.tgz#2eef2fd65a74c179880ae5ee6975d99ce21eb7b4" + integrity sha1-Lu8v1lp0wXmICuXuaXXZnOIet7Q= + dependencies: + amdefine ">=0.0.4" + source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +"source-map@>= 0.1.2": + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +"source-map@~ 0.1.8": + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= + dependencies: + amdefine ">=0.0.4" + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -12989,6 +13343,13 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -13326,6 +13687,13 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" +swr@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/swr/-/swr-0.2.0.tgz#2088271bc0a8044089cf2badde013648f98783ee" + integrity sha512-8IZCdM0deUPhDiqOmyaj0BsnNjav1fu83nD0d07PEAzOHOn+lxcJOxwXeDBShwF6qCeZ8u8ab+a2yXkjD8yT3A== + dependencies: + fast-deep-equal "2.0.1" + symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -13362,6 +13730,15 @@ tar-stream@^2.1.0: inherits "^2.0.3" readable-stream "^3.1.1" +tar@^0.1.18: + version "0.1.20" + resolved "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz#42940bae5b5f22c74483699126f9f3f27449cb13" + integrity sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM= + dependencies: + block-stream "*" + fstream "~0.1.28" + inherits "2" + tar@^4.3.0, tar@^4.4.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -13394,6 +13771,13 @@ teeny-request@^6.0.0: stream-events "^1.0.5" uuid "^7.0.0" +tempfile@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-0.1.3.tgz#7d6b710047339d39f847327a056dadf183103010" + integrity sha1-fWtxAEcznTn4RzJ6BW2t8YMQMBA= + dependencies: + uuid "~1.4.0" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -13722,6 +14106,16 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== +underscore.string@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d" + integrity sha1-ccCL9rQosRM/N+ePo6Icgvcymw0= + +underscore@^1.6.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" + integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -13988,6 +14382,11 @@ uuid@^7.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6" integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw== +uuid@~1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz#453019f686966a6df83cdc5244e7c990ecc332fc" + integrity sha1-RTAZ9oaWam34PNxSROfJkOzDMvw= + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -14035,6 +14434,11 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + w3c-hr-time@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -14281,7 +14685,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.0.5, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14332,6 +14736,11 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + workbox-background-sync@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950"