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 (
-
-
-
- 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(
+
+ )
+}
+
+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 (
+
+
+
+ Voltar para home
+
+
+
+ {
+ 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(
+
+
+
+
+
+
+ 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';