diff --git a/package-lock.json b/package-lock.json index b3c7d9e..c2a0ed5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1647,6 +1647,11 @@ "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" }, + "@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" + }, "@types/glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", @@ -1656,6 +1661,12 @@ "@types/node": "*" } }, + "@types/history": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.6.tgz", + "integrity": "sha512-GRTZLeLJ8ia00ZH8mxMO8t0aC9M1N9bN461Z2eaRurJo6Fpa+utgCwLzI4jQHcrdzuzp5WPN9jRwpsCQ1VhJ5w==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz", @@ -1691,6 +1702,14 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==" }, + "@types/leaflet": { + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.12.tgz", + "integrity": "sha512-61HRMIng+bWvnnAIqUWLBlrd/TQZc4gU+gN1JL4K47EDtwIrcMEhWgi7PdcpbG1YmpH4F0EfOimkvV82gJIl9w==", + "requires": { + "@types/geojson": "*" + } + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -1733,6 +1752,44 @@ "@types/react": "*" } }, + "@types/react-leaflet": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@types/react-leaflet/-/react-leaflet-2.5.1.tgz", + "integrity": "sha512-a6iCOLGstIsmd+Om4Ri/XUWxikF5jNy85M8wOgDyn7+Y2xx5ziVsPiiLxssLgTh12RdXkkzj7rdy0avyY3uROw==", + "requires": { + "@types/leaflet": "*", + "@types/react": "*" + } + }, + "@types/react-lottie": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/react-lottie/-/react-lottie-1.2.5.tgz", + "integrity": "sha512-g5c7r0VN8g0hLsFEtR71ZFDWDp6niY4D/7llcAcLjV3LpaoyANmaQ9jispskWpkAUP+NYQcFllMtoGIWUM6VRw==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.7.tgz", + "integrity": "sha512-2ouP76VQafKjtuc0ShpwUebhHwJo0G6rhahW9Pb8au3tQTjYXd2jta4wv6U2tGLR/I42yuG00+UXjNYY0dTzbg==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.5.tgz", + "integrity": "sha512-ArBM4B1g3BWLGbaGvwBGO75GNFbLDUthrDojV2vHLih/Tq8M+tgvY1DSwkuNrPSwdp/GUL93WSEpTZs8nVyJLw==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -2445,6 +2502,37 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "axobject-query": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", @@ -6234,6 +6322,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -6244,6 +6345,14 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -7717,6 +7826,11 @@ "invert-kv": "^2.0.0" } }, + "leaflet": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.6.0.tgz", + "integrity": "sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ==" + }, "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", @@ -7855,6 +7969,11 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -7895,6 +8014,11 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lottie-web": { + "version": "5.6.10", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.6.10.tgz", + "integrity": "sha512-ucTzaiBJOMm56/K7Wqjajyh7qXlonHKB3+b5fHvhSiz+jOrXt6QDNKAinI3qdw/zvvYHKzXvFMy5SgOXbOJ5ng==" + }, "lower-case": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", @@ -8142,6 +8266,15 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, + "mini-create-react-context": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", + "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", + "requires": { + "@babel/runtime": "^7.5.5", + "tiny-warning": "^1.0.3" + } + }, "mini-css-extract-plugin": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", @@ -10626,11 +10759,85 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" }, + "react-icons": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-3.10.0.tgz", + "integrity": "sha512-WsQ5n1JToG9VixWilSo1bHv842Cj5aZqTGiS3Ud47myF6aK7S/IUY2+dHcBdmkQcCFRuHsJ9OMUI0kTDfjyZXQ==", + "requires": { + "camelcase": "^5.0.0" + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-leaflet": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-2.7.0.tgz", + "integrity": "sha512-pMf5eRyWU8RH9HohM2i0NZymcWHraJA1m6iMFYu94/01PAaBJpOyxORZJmN6cV9dBzkVWaLjAAHTNmxbwIpcfw==", + "requires": { + "@babel/runtime": "^7.9.2", + "fast-deep-equal": "^3.1.1", + "hoist-non-react-statics": "^3.3.2", + "warning": "^4.0.3" + } + }, + "react-lottie": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-lottie/-/react-lottie-1.2.3.tgz", + "integrity": "sha512-qLCERxUr8M+4mm1LU0Ruxw5Y5Fn/OmYkGfnA+JDM/dZb3oKwVAJCjwnjkj9TMHtzR2U6sMEUD3ZZ1RaHagM7kA==", + "requires": { + "babel-runtime": "^6.26.0", + "lottie-web": "^5.1.3" + } + }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, "react-scripts": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz", @@ -10691,6 +10898,18 @@ "workbox-webpack-plugin": "4.3.1" } }, + "react-validation": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/react-validation/-/react-validation-3.0.7.tgz", + "integrity": "sha1-tQcL+KbnN7hw2Hu/tyzMpys/N1A=", + "requires": { + "lodash.omit": "^4.5.0", + "prop-types": "^15.6.0", + "react": "^16.0.0", + "shallow-equal": "^1.0.0", + "uuid": "^3.1.0" + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -11034,6 +11253,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -11507,6 +11731,11 @@ } } }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12501,6 +12730,16 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12877,6 +13116,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -12933,6 +13177,14 @@ "makeerror": "1.0.x" } }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "watchpack": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", diff --git a/package.json b/package.json index d3f10ec..81686a8 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,16 @@ "@types/node": "^12.12.44", "@types/react": "^16.9.35", "@types/react-dom": "^16.9.8", + "@types/react-leaflet": "^2.5.1", + "@types/react-lottie": "^1.2.5", + "axios": "^0.19.2", + "leaflet": "^1.6.0", "react": "^16.13.1", "react-dom": "^16.13.1", + "react-icons": "^3.10.0", + "react-leaflet": "^2.7.0", + "react-lottie": "^1.2.3", + "react-router-dom": "^5.2.0", "react-scripts": "3.4.1", "typescript": "^3.7.5" }, @@ -35,5 +43,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@types/react-router-dom": "^5.1.5" } } diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index bcd5dfd..0000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/index.html b/public/index.html index aa069f2..355bd5b 100644 --- a/public/index.html +++ b/public/index.html @@ -2,42 +2,22 @@ - - - + + ColetaWeb + + + - - - - - React App
- diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100644 index fc44b0a..0000000 Binary files a/public/logo192.png and /dev/null differ diff --git a/public/logo512.png b/public/logo512.png deleted file mode 100644 index a4e47a6..0000000 Binary files a/public/logo512.png and /dev/null differ diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/src/App.css b/src/App.css index 74b5e05..a18ecd3 100644 --- a/src/App.css +++ b/src/App.css @@ -1,38 +1,26 @@ -.App { - text-align: center; +:root { + --primary-color: #34CB79; + --title-color: #322153; + --text-color: #6C6C80; } -.App-logo { - height: 40vmin; - pointer-events: none; +* { + margin: 0; + padding: 0; + box-sizing: border-box; } -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } +body { + background: #F0F0F5; + -webkit-font-smoothing: antialiased; + color: var(--text-color); } -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; +body, input, button { + font-family: Roboto, Arial, Helvetica, sans-serif; } -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } +h1, h2, h3, h4, h5, h6 { + color: var(--title-color); + font-family: Ubuntu; } diff --git a/src/App.test.tsx b/src/App.test.tsx deleted file mode 100644 index 4db7ebc..0000000 --- a/src/App.test.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - const { getByText } = render(); - const linkElement = getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/src/App.tsx b/src/App.tsx index cd09569..0e9ce26 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,16 +1,14 @@ import React from 'react'; -import logo from './logo.svg'; import './App.css'; +import Routes from './routes'; + function App() { - return ( -
-
- logo -

Hello World

-
+ return ( +
+
- ); + ) } -export default App; +export default App; \ No newline at end of file diff --git a/src/Header.tsx b/src/Header.tsx new file mode 100644 index 0000000..173a4fc --- /dev/null +++ b/src/Header.tsx @@ -0,0 +1,17 @@ +import React, { Component } from 'react' + +interface HeaderProps { + title: string; +} + +const Header: React.FC = (props) => { + + + return( +
+

{props.title}

+
+ ) +} + +export default Header; \ No newline at end of file diff --git a/src/assets/confirm.json b/src/assets/confirm.json new file mode 100644 index 0000000..a4971f0 --- /dev/null +++ b/src/assets/confirm.json @@ -0,0 +1 @@ +{"v":"4.10.1","fr":25,"ip":0,"op":55,"w":796,"h":714,"nm":"Anim8*","ddd":0,"assets":[{"id":"comp_745","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"cruz3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1],"e":[100]},{"t":28}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[-33],"e":[13]},{"t":50}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"n":"0_1_0p333_0","t":18,"s":[614.125,467.5,0],"e":[841.125,680.5,0],"to":[37.8333320617676,35.5,0],"ti":[-37.8333320617676,-35.5,0]},{"t":28}],"ix":2},"a":{"a":0,"k":[-882.375,-1726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-894.5,-1726],[-869.5,-1726]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4235294117647059,0.788235294117647,0.7568627450980392,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-894.5,-1726],[-869.5,-1726]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4235294117647059,0.788235294117647,0.7568627450980392,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-882.239,-1725.811],"ix":2},"a":{"a":0,"k":[-882.239,-1725.811],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-90,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":18,"op":1020.5,"st":18,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"cruz2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1],"e":[100]},{"t":26}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[-30],"e":[16]},{"t":50}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"n":"0_1_0p333_0","t":16,"s":[606.125,465.5,0],"e":[322.125,572.5,0],"to":[-47.3333320617676,17.8333339691162,0],"ti":[47.3333320617676,-17.8333339691162,0]},{"t":26}],"ix":2},"a":{"a":0,"k":[-882.375,-1726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-894.5,-1726],[-869.5,-1726]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4235294117647059,0.788235294117647,0.7568627450980392,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-894.5,-1726],[-869.5,-1726]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-882.239,-1725.811],"ix":2},"a":{"a":0,"k":[-882.239,-1725.811],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-90,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":16,"op":1018.5,"st":16,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"cruz1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[1],"e":[100]},{"t":25}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[-28],"e":[18]},{"t":50}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.103,"y":1},"o":{"x":0.333,"y":0},"n":"0p103_1_0p333_0","t":15,"s":[614.125,462.5,0],"e":[852.125,164.5,0],"to":[39.6666679382324,-49.6666679382324,0],"ti":[-39.6666679382324,49.6666679382324,0]},{"t":25}],"ix":2},"a":{"a":0,"k":[-882.375,-1726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-894.5,-1726],[-869.5,-1726]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-894.5,-1726],[-869.5,-1726]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-882.239,-1725.811],"ix":2},"a":{"a":0,"k":[-882.239,-1725.811],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-90,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":15,"op":1017.5,"st":15,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Bolas2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[617.5,490.5,0],"ix":2},"a":{"a":0,"k":[-1112,-1428,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.101,0.101,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p101_1_0p333_0","0p101_1_0p333_0","0p667_1_0p333_0"],"t":13,"s":[0,0,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[19.355,19.355],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-952.029,-1150.197],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[64.361,64.361],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 3","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[19.355,19.355],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-1435.793,-1556.371],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[64.361,64.361],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 2","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":13,"op":1015.5,"st":13,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Bolas1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.921]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p921_0p333_0"],"t":11,"s":[-11],"e":[0]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.167],"y":[0.327]},"n":["0p15_1_0p167_0p327"],"t":23,"s":[0],"e":[6]},{"t":50}],"ix":10},"p":{"a":0,"k":[621.5,478.5,0],"ix":2},"a":{"a":0,"k":[-1108,-1440,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.101,0.101,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p101_1_0p333_0","0p101_1_0p333_0","0p667_1_0p333_0"],"t":11,"s":[0,0,100],"e":[100,100,100]},{"t":23}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[19.355,19.355],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-1151.238,-1723.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[140.88,140.88],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[19.355,19.355],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7803921568627451,0.9098039215686274,0.6784313725490196,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-1282.949,-1147.881],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[140.88,140.88],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[19.355,19.355],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.48627450980392156,0.9921568627450981,0.3058823529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-819.535,-1371.645],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[85.671,85.671],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 3","np":3,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":1013.5,"st":11,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"stroke3","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1950.5,2175.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1401.5,-1457.5],[-1117.454,-1623.493]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.48627450980392156,0.9921568627450981,0.3058823529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":92,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100.04,99.99],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.156],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p156_1_0p333_0"],"t":9,"s":[0],"e":[100]},{"t":17}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":9,"op":1011.5,"st":9,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"stroke4","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2288.5,1790.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1401.5,-1457.5],[-1372.351,-1474.477]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.48627450980392156,0.9921568627450981,0.3058823529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":92,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100.04,99.99],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.156],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p156_1_0p333_0"],"t":6.5,"s":[0],"e":[100]},{"t":14.5}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":6.5,"op":1009,"st":6.5,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"stroke2","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1818.5,2059.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1401.5,-1457.5],[-1027.49,-1672.499]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.48627450980392156,0.9921568627450981,0.3058823529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":92,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100.04,99.99],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.156],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p156_1_0p333_0"],"t":4,"s":[0],"e":[100]},{"t":12}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":4,"op":1006.5,"st":4,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"stroke1","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1729.5,1918.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1401.5,-1457.5],[-1027.49,-1672.499]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.48627450980392156,0.9921568627450981,0.3058823529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":92,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100.04,99.99],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.156],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p156_1_0p333_0"],"t":0,"s":[0],"e":[100]},{"t":8}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1002.5,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[396.5,357,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-72,6],[-28,49],[75,-54]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.156],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p156_1_0p333_0"],"t":18,"s":[0],"e":[100]},{"t":32}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":18,"op":73,"st":18,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[398,357.031,0],"ix":2},"a":{"a":0,"k":[9.719,2.719,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0_1_0p333_0","0_1_0p333_0","0p667_1_0p333_0"],"t":13,"s":[30,30,100],"e":[91.577,91.577,100]},{"t":21}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.438,355.438],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.5058823529411764,0.7294117647058823,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.719,2.719],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":13,"op":68,"st":13,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[398.111,357.031,0],"ix":2},"a":{"a":0,"k":[9.719,2.719,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0_1_0p333_0","0_1_0p333_0","0p667_1_0p333_0"],"t":8,"s":[30,30,100],"e":[101.143,101.143,100]},{"t":16}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.438,355.438],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2549019607843137,0.4588235294117647,0.0196078431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.719,2.719],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":63,"st":8,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"BG","refId":"comp_745","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1513.5,1812.5,0],"ix":2},"a":{"a":0,"k":[1729.5,1918.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":3459,"h":3837,"ip":0,"op":1005,"st":0,"bm":0}]} \ No newline at end of file diff --git a/src/assets/home-background.svg b/src/assets/home-background.svg new file mode 100644 index 0000000..bad59d7 --- /dev/null +++ b/src/assets/home-background.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..03684fe --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/index.css b/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/src/index.tsx b/src/index.tsx index f5185c1..c1f31c5 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,8 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; import App from './App'; -import * as serviceWorker from './serviceWorker'; ReactDOM.render( @@ -10,8 +8,3 @@ ReactDOM.render( , document.getElementById('root') ); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/pages/CreatePoint/index.tsx b/src/pages/CreatePoint/index.tsx new file mode 100644 index 0000000..8054989 --- /dev/null +++ b/src/pages/CreatePoint/index.tsx @@ -0,0 +1,323 @@ +import React, { useEffect, useState, ChangeEvent, FormEvent } from 'react'; +import { Link, useHistory } from 'react-router-dom'; +import { FiArrowLeft, FiCheck } from 'react-icons/fi'; +import { Map, TileLayer, Marker, } from 'react-leaflet'; +import {LeafletMouseEvent} from 'leaflet'; +import Axios from 'axios'; +import Lottie from 'react-lottie'; +import animationData from '../../assets/confirm.json'; +import api from '../../services/api'; + + +import './styles.css'; + +import logo from '../../assets/logo.svg'; + + +interface Item { + id: number; + title: string; + img_url: string; +} + +interface IBGEUFResponse { + sigla: string; +} + +interface IBGECityResponse { + nome: string; +} + +const CreatePoint = () => { + const [submited, setSubmited] = useState(false); + const [items, setItems] = useState([]); + const [ufs, setUFs] = useState([]); + const [cities, setCities] = useState([]); + + const [initialPosition, setInitialPosition] = useState<[number, number]>([0,0]); + + const [selectedUF, setSelectedUF] = useState("0"); + const [selectedCity, setSelectedCity] = useState("0"); + const [selectedItems, setSelectedItems] = useState([]); + const [selectedPosition, setSelectedPosition] = useState<[number, number]>([0,0]); + + const [formData, setFormData] = useState({ + name: '', + email: '', + whatsapp: '' + }) + + useEffect(() => { + navigator.geolocation.getCurrentPosition(position => { + setInitialPosition([ + position.coords.latitude, + position.coords.longitude + ]) + }) + }); + + useEffect(() => { + api.get('items').then(response => { + setItems(response.data); + }); + }, []); + + useEffect(() => { + Axios.get('https://servicodados.ibge.gov.br/api/v1/localidades/estados').then(response => { + const ufInitials = response.data.map(uf => uf.sigla); + setUFs(ufInitials); + }); + }, []); + + //load cities everytime UF change + useEffect(() => { + Axios.get(`https://servicodados.ibge.gov.br/api/v1/localidades/estados/${selectedUF}/municipios`).then(response => { + const cityNames = response.data.map(uf => uf.nome); + + setCities(cityNames); + }); + }, [selectedUF]); + + //permitira navegar para outra rota + const history = useHistory(); + + //configurações de animação + const defaultOptions = { + loop: false, + autoplay: true, + animationData: animationData, + rendererSettings: { + preserveAspectRatio: 'xMidYMid slice' + } + }; + + function handleSelectUF(event: ChangeEvent){ + const uf = event.target.value; + + setSelectedUF(uf); + } + + function handleSelectCity(event: ChangeEvent){ + const city = event.target.value; + + setSelectedCity(city); + } + + function handleMapClick(event:LeafletMouseEvent){ + setSelectedPosition([ + event.latlng.lat, + event.latlng.lng + ]); + } + + function handleInputChange(event:ChangeEvent){ + const {name, value} = event.target; + + setFormData({ + ...formData, + [name]: value + }) + } + + function handleSelectedItem(id: number){ + const alreadySelected = selectedItems.findIndex(item => item === id); + + if(alreadySelected >= 0){ + const filteredItems = selectedItems.filter(item => item !== id); + + setSelectedItems(filteredItems); + }else{ + setSelectedItems([ + ...selectedItems, + id + ]) + } + } + + async function handleSubmit(event:FormEvent){ + //evita o submit de efetuar refresh da tela + event.preventDefault(); + + const {name, email, whatsapp} = formData; + const uf = selectedUF; + const city = selectedCity; + const [lat, long] = selectedPosition; + const items = selectedItems; + + const data = { + name, + email, + whatsapp, + uf, + city, + lat, + long, + items + }; + + try { + await api.post('points',data); + + setSubmited(true); + + setTimeout(() => { + setSubmited(false); + history.push('/'); + },2000) + + + + } catch (e){ + console.log(e); + }; + + + } + + return ( +
+
+ ColetaWeb + Voltar para home +
+ +
+

Cadastro do
Ponto de Coleta

+ +
+ +

Dados

+
+ +
+ + +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ +

Endereço

+ Selecione o endereço no mapa +
+ + + + + + + +
+
+ + +
+ + +
+ + +
+
+
+
+ +

Itens de coleta

+ Selecione um ou mais itens abaixo +
+ +
    + {items.map(item => +
  • handleSelectedItem(item.id)} + className={selectedItems.includes(item.id) ? 'selected' : ''} + > + + {item.title}/ + {item.title} +
  • + )} + +
+
+ + +
+ { + submited + ? +
+
+ + +

Ponto de coleta
cadastrado com sucesso!

+
+
+ : + null + } +
+
+
+ ); +} + +export default CreatePoint; \ No newline at end of file diff --git a/src/pages/CreatePoint/styles.css b/src/pages/CreatePoint/styles.css new file mode 100644 index 0000000..e76776a --- /dev/null +++ b/src/pages/CreatePoint/styles.css @@ -0,0 +1,242 @@ +#page-create-point { + width: 100%; + max-width: 1100px; + + margin: 0 auto; +} + +#page-create-point header { + margin-top: 48px; + + display: flex; + justify-content: space-between; + align-items: center; +} + +#page-create-point header a { + color: var(--title-color); + font-weight: bold; + text-decoration: none; + + display: flex; + align-items: center; +} + +#page-create-point header a svg { + margin-right: 16px; + color: var(--primary-color); +} + +#page-create-point form { + margin: 80px auto; + padding: 64px; + max-width: 730px; + background: #FFF; + border-radius: 8px; + + display: flex; + flex-direction: column; +} + +#page-create-point form h1 { + font-size: 36px; +} + +#page-create-point form fieldset { + margin-top: 64px; + min-inline-size: auto; + border: 0; +} + +#page-create-point form legend { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 40px; +} + +#page-create-point form legend h2 { + font-size: 24px; +} + +#page-create-point form legend span { + font-size: 14px; + font-weight: normal; + color: var(--text-color); +} + +#page-create-point form .field-group { + flex: 1; + display: flex; +} + +#page-create-point form .field { + flex: 1; + + display: flex; + flex-direction: column; + margin-bottom: 24px; +} + +#page-create-point form .field input[type=text], +#page-create-point form .field input[type=email], +#page-create-point form .field input[type=number] { + flex: 1; + background: #F0F0F5; + border-radius: 8px; + border: 0; + padding: 16px 24px; + font-size: 16px; + color: #6C6C80; +} + +#page-create-point form .field select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + flex: 1; + background: #F0F0F5; + border-radius: 8px; + border: 0; + padding: 16px 24px; + font-size: 16px; + color: #6C6C80; +} + +#page-create-point form .field input::placeholder { + color: #A0A0B2; +} + +#page-create-point form .field label { + font-size: 14px; + margin-bottom: 8px; +} + +#page-create-point form .field :disabled { + cursor: not-allowed; +} + +#page-create-point form .field-group .field + .field { + margin-left: 24px; +} + +#page-create-point form .field-group input + input { + margin-left: 24px; +} + +#page-create-point form .field-check { + flex-direction: row; + align-items: center; +} + +#page-create-point form .field-check input[type=checkbox] { + background: #F0F0F5; +} + +#page-create-point form .field-check label { + margin: 0 0 0 8px; +} + +#page-create-point form .leaflet-container { + width: 100%; + height: 350px; + border-radius: 8px; + margin-bottom: 24px; +} + +#page-create-point form button { + width: 276px; + height: 56px; + padding-right: 20px; + background: var(--primary-color); + border-radius: 8px; + color: #FFF; + font-weight: bold; + font-size: 16px; + border: 0; + align-self: flex-end; + margin-top: 40px; + transition: background-color 0.2s; + cursor: pointer; + display: flex; + align-items: center; + outline: none; +} + +#page-create-point form button span { + width: 50px; + margin-right: 10px; + height: 54px; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s; + background: rgba(0, 0, 0, 0.08); +} + +#page-create-point form button:hover { + background: #2FB86E; +} + +.items-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 16px; + list-style: none; +} + +.items-grid li { + background: #f5f5f5; + border: 2px solid #f5f5f5; + height: 180px; + border-radius: 8px; + padding: 32px 24px 16px; + + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + + text-align: center; + + cursor: pointer; +} + +.items-grid li span { + flex: 1; + margin-top: 12px; + + display: flex; + align-items: center; + color: var(--title-color) +} + +.items-grid li.selected { + background: #E1FAEC; + border: 2px solid #34CB79; +} + + +.confirm-modal { + background: rgba(255, 255, 255, 0.93);; + width: 100%; + position: fixed; + top: 0px; + left: 0px; + z-index: 9000; + height: 100%; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + text-align: center; +} + +.confirm-modal .animation { + flex-basis: 100%; +} + +.confirm-modal .animation h1 { + color: #417505; +} \ No newline at end of file diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx new file mode 100644 index 0000000..475c9e6 --- /dev/null +++ b/src/pages/Home/index.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { FiLogIn } from 'react-icons/fi' + +import './styles.css'; + +import logo from '../../assets/logo.svg'; +import { Link } from 'react-router-dom'; + +const Home = () => { + return( +
+
+
+ ColetaWeb +
+
+

Descarte seus resíduos de forma segura

+

Ajude o meio ambiente encontrando facilmente o ponto de coleta mais próximo.

+ + + Cadastre um ponto de coleta + +
+
+
+ ); +} + +export default Home; \ No newline at end of file diff --git a/src/pages/Home/styles.css b/src/pages/Home/styles.css new file mode 100644 index 0000000..3521461 --- /dev/null +++ b/src/pages/Home/styles.css @@ -0,0 +1,107 @@ +#page-home { + height: 100vh; + + background: url('../../assets/home-background.svg') no-repeat 1080px bottom; +} + +#page-home .content { + width: 100%; + height: 100%; + max-width: 1100px; + margin: 0 auto; + padding: 0 30px; + + display: flex; + flex-direction: column; + align-items: flex-start; +} + +#page-home .content header { + margin: 48px 0 0; +} + +#page-home .content main { + flex: 1; + max-width: 560px; + + display: flex; + flex-direction: column; + justify-content: center; +} + +#page-home .content main h1 { + font-size: 54px; + color: var(--title-color); +} + +#page-home .content main p { + font-size: 24px; + margin-top: 24px; + line-height: 38px; +} + +#page-home .content main a { + width: 100%; + max-width: 360px; + height: 72px; + background: var(--primary-color); + border-radius: 8px; + text-decoration: none; + + display: flex; + align-items: center; + overflow: hidden; + + margin-top: 40px; +} + +#page-home .content main a span { + display: block; + background: rgba(0, 0, 0, 0.08); + width: 72px; + height: 72px; + + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s; +} + +#page-home .content main a span svg { + color: #FFF; + width: 20px; + height: 20px; +} + +#page-home .content main a strong { + flex: 1; + text-align: center; + color: #FFF; +} + +#page-home .content main a:hover { + background: #2FB86E; +} + +@media(max-width: 900px) { + #page-home .content { + align-items: center; + text-align: center; + } + + #page-home .content header { + margin: 48px auto 0; + } + + #page-home .content main { + align-items: center; + } + + #page-home .content main h1 { + font-size: 42px; + } + + #page-home .content main p { + font-size: 24px; + } +} diff --git a/src/routes.tsx b/src/routes.tsx new file mode 100644 index 0000000..1974350 --- /dev/null +++ b/src/routes.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { Route, BrowserRouter } from 'react-router-dom'; + +import Home from './pages/Home'; +import CreatePoint from './pages/CreatePoint'; + +const Routes = () => { + return ( + + + + + ) +} + +export default Routes; \ No newline at end of file diff --git a/src/serviceWorker.ts b/src/serviceWorker.ts deleted file mode 100644 index b09523f..0000000 --- a/src/serviceWorker.ts +++ /dev/null @@ -1,149 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.0/8 are considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -type Config = { - onSuccess?: (registration: ServiceWorkerRegistration) => void; - onUpdate?: (registration: ServiceWorkerRegistration) => void; -}; - -export function register(config?: Config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL( - process.env.PUBLIC_URL, - window.location.href - ); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl: string, config?: Config) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl: string, config?: Config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl, { - headers: { 'Service-Worker': 'script' } - }) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready - .then(registration => { - registration.unregister(); - }) - .catch(error => { - console.error(error.message); - }); - } -} diff --git a/src/services/api.ts b/src/services/api.ts new file mode 100644 index 0000000..f9e6f4d --- /dev/null +++ b/src/services/api.ts @@ -0,0 +1,7 @@ +import axios from 'axios'; + +const api = axios.create({ + baseURL: 'http://localhost:3333/' +}); + +export default api; \ No newline at end of file diff --git a/src/setupTests.ts b/src/setupTests.ts deleted file mode 100644 index 74b1a27..0000000 --- a/src/setupTests.ts +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom/extend-expect';